Struts 2 Validierung und Wiederauffüllung der Eingabefelder

Wenn ich die folgende struts.xml-Konfiguration habe:

<action name="input">
   <result>/jsp/input.jsp</result>
</action>

<action name="result">
    <result>/jsp/result.jsp</result>
    <result name="input">/jsp/input.jsp</result>
</action>

Und ein einfaches Formular mit nur einem Feld:

<s:form action="result">
    <s:textfield name="firstName" label="First Name"/>
    <s:submit/>
</s:form>

Wenn die Validierung fehlschlägt, nehmen wir an, dass jedes Mal, wenn ich die Aktion (das Ergebnis) einreiche, überprüft wird, dass der Vorname länger als 3 ist. Wenn dies fehlschlägt, wird zur Eingabeseite zurückgekehrt. In diesem Fall ist die Datei input.jsp jedoch mit dem Feld firstName bereits ausgefüllt (mit dem falschen Wert, den ich gerade übermittelt habe. Wie macht Struts 2 das? Ich frage mich, da nach meinem Verständnis beim Senden die Standardmethode darin besteht, die Eingabedaten für die Aktion zu POSTEN, und die Namen der Anforderungsparameter, die mit der Validierung übereinstimmen, werden validiert. Falls die Validierung fehlschlägt, kehrt das Programm mit nur den verfügbaren Anforderungsparametern zur Eingabeseite zurück (als Antwort auf den POST). Daher denke ich nur, dass das Eingabefeld mit diesen Anforderungsparametern gefüllt wird, außer für Beispiel, wenn ich den folgenden Test durchführe: Angenommen, ich simuliere das mit folgendem Beispiel:

http: //domain/myApp/input.action? firstName = alfredo Das Eingabefeld Vorname wird nicht ausgefüllt.

Aber wenn das Ergebnis aus einer Validierung stammt, wird es ausgefüllt. Ich frage mich, ob Struts 2, um die Werte zu erhalten, die in den Anforderungsparametern enthalten sein sollten, das Anforderungsparameterobjekt (#parameters) pushen und auf diese Weise füllen soll.

Kann mir das jemand erklären? Wie erreicht Struts 2 diese Wiederauffüllung?

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage