<logic:iterate> --> Selektieren eines Elementes

klaeuschen41

Mitglied
Hallo ng,

ich habe ein hartnäckiges Problem mit meiner Drop-Down-Liste:

Ich möchte dabei nämlich einen ganz bestimmten Wert auswählen und bekomme es einfach nicht hin (es gibt eine Null-Pointer-Exception).

Habe mit dem <logic:equal>-Tag von Struts und jetzt mit JSP versucht, aber es klappt einfach nicht! Sieht vielleicht jemand den Fehler? Ich übersehe ihn schon die ganze Zeit. Vielleicht geht es aber ja auch viel einfacher mit Struts?

Code:
<select name="language" size="1" style="width:150px">
<%!int j=0;%>
	<logic:iterate id="languages" name="languages">
		<option value="<bean:write name="languages" />"
<% String index_string = request.getParameter("index"); 
int index = new Integer(index_string).intValue(); 
if(j==index){out.print(" selected=\"selected\"");}%>
<% j++; %>>
<bean:write name="languages" /></option>					
	</logic:iterate>
<% j=0;%>
</select>
die Fehlermeldung:
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Unknown Source)
java.lang.Integer.<init>(Unknown Source)
org.apache.jsp.editUser_jsp._jspService(editUser_jsp.java:204)

Wäre cool, wenn jemand helfen könnte!
Schöne Grüße,
Klaus
 
Hi Klaus,

ich habe es folgendermassen realisiert:

In meiner Struts-Form habe ich:

public class RegistryForm extends ActionForm {
private LegalformBean legalformBean;
private List legalformList;

public void reset() {
this.legalformBean= null;
this.legalformList = new ArrayList();
}

//... getter- und setter-Methoden
}

In meiner JSP-Seite:

<html:select name="registryForm" property="legalformBean.id">
<html:eek:ption value="-1">
<bean:message key="registry.label.registry.choise" />
</html:eek:ption>
<html:eek:ption value="-99">-----------------------------------------------</html:eek:ption>
<logic:notEmpty name="registryForm" property="legalformList" scope="request">
<logic:iterate name="registryForm" property="legalformList" id="entity">
<html:eek:ption value="${entity.ID}">
<bean:write name="entity" property="legalform" />
</html:eek:ption>
</logic:iterate>
</logic:notEmpty>
</html:select>

In meiner Action-Klasse:

public ActionForward execute(......) throws Exception {
RegistryForm registryForm = (RegistryForm)form;
System.out.println("Selected ID = " + registryForm.getLegalformBean().getId());
}

---> Wenn du einen bereits existierenden Wert für die ID mitübergeben möchtest:

public ActionForward execute(...) throws Exception {
RegistryForm registryForm = (RegistryForm)form;
LegalformBean lfb = new LegalformBean();
lfb.setId("1234");
registryForm.setLegalformBean(lfb);
}

Die ID wird dadurch automatisch gesetzt.

Wichtiger Hinweis noch:

Wenn du mit Eclipse arbeitest und den Visual Designer von struts-config.xml verwendest, achte darauf, das die XDoclet-Angaben oben in den Action-Klassen miteingetragen sind. Z. B.:

/**
* MyEclipse Struts Creation date: 02-18-2006
*
* XDoclet definition:
*
* @struts.action path="/registry" name="registryForm"
* input="/pages/masthead/Masthead.jsp" scope="request"
* validate="true"
*/

Ich habe die Erfahrung gemacht das es andernfalls zu Schwierigkeiten bei der Zuordnung von Forms zu Action-Klassen kommen kann.

Hoffe es hilft dir.

Gruss
Cengiz
 

Neue Beiträge

Zurück