Struts 1.3: Anfrage-Attribute verloren nach dem Einreichen

Habe ich zwei jsp-Seite, sagen form.jsp und myForm.jsp.

In der ersten Seite, zu bilden.jsp, es ist ein radio button-group (das Formular den Namen "Formular").

Wenn der Nutzer diese form, einige Informationen abgerufen werden aus einer db und mit diesen Informationen das Formular in myForm.jsp gebaut wird (der name des Formulars ist "myForm").

Das problem ist, dass, wenn dieses zweite Formular gesendet wird, werden nur die Fehler angezeigt, aber nicht die Formularfelder erstellt von db-Werten.
Ich habe zum Beispiel das abrufen von Datenbank-Bezeichnungen und Werte für die beiden radio-buttons (Eigenschaft " ="prop").

In struts-config.xml habe ich:

<form-bean name="myForm" type="org.apache.struts.validator.MyValidatorActionForm">
<form-property name="prop" type="java.lang.Integer"></form-property>
</form-bean>

<action path="/form" input="/jsp/home.jsp" name="form" scope="request" type="myPackage.LoadInfo">

<forward name="Success" path="/jsp/myForm.jsp"/>  
<forward name="Failure" path="/jsp/home.jsp" />     
</action>

 <action path="/myForm" input="/jsp/myForm.jsp" name="myForm" validate="true" scope="request" type="myPackage.MyValidatorAction"> 
<forward name="Success" path="/jsp/success.jsp"/>  
<forward name="Failure" path="/jsp/failure.jsp"/>
</action>

In myForm.jsp:

<html:form action="/myForm">
 <div><label>*&nbsp;<bean:message key="myForm.label"/></label>
<c:forEach var="propTypes" items="${props}">
<html:radio property="prop" value="${propTypes.value}">${propTypes.label}
     </html:radio>
     </c:forEach>
&nbsp;&nbsp;<html:errors property="prop" />
 </div>
<div><html:submit><bean:message key="myForm.label2"/></html:submit></div>
 </html:form>

In validation.xml:

Nachdem Sie die form Einreichen, ohne wählen Sie jeden radio-button, die Fehlermeldung angezeigt, aber nicht die radio-buttons.

Wie konnte ich behaupten alle request-Attribute?
Ich habe versucht, Rahmen der Sitzung auch, aber hat sich nichts geändert:

 <action path="/myForm" input="/jsp/myForm.jsp" name="myForm" validate="true" scope="session" type="myPackage.MyValidatorAction"> 
<forward name="Success" path="/jsp/success.jsp"/>  
<forward name="Failure" path="/jsp/failure.jsp"/>
</action>

Ich gelöst mit:

request.getSession().setAttribute("props", props);

in der Aktion LoadInfo aufgerufen, bevor die Anzeige des Formulars.

In myForm.jsp ich benutze:

 request.getSession().getAttribute("props");

Statt in der struts-config.xml der Umfang bleibt Anfrage.

Trotzdem, das ist keine gute Lösung, denn die verschiedenen browser-tabs teilen sich die gleiche session.

Wie könnte ich dieses Problem beheben?

InformationsquelleAutor Sefran2 | 2012-11-02

Schreibe einen Kommentar