Validação do Struts 2 e repovoamento dos campos de entrada
Se eu tiver a seguinte configuração struts.xml:
<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>
E um formulário simples com apenas um campo:
<s:form action="result">
<s:textfield name="firstName" label="First Name"/>
<s:submit/>
</s:form>
Quando a validação falha, digamos que toda vez que envio a ação (resultado) valida que o comprimento do firstName é maior que 3. Quando falhar, ele retornará à página de entrada, neste caso, input.jsp, mas com o campo firstName já preenchido ( com o valor incorreto que acabei de enviar.Como o Struts 2 faz isso? Gostaria de saber porque, como eu entendo quando envio o método padrão, é POSTAR os dados de entrada para a ação e esses nomes de parâmetros de solicitação que correspondem à validação serão validados. caso falhe na validação, retornará à página de entrada (como resposta do POST) com apenas os parâmetros de solicitação disponíveis.Portanto, o único pensamento que me vem à mente é que o campo de entrada é preenchido com esses parâmetros de solicitação, mas por exemplo se eu fizer o seguinte teste, digamos que simule isso com o seguinte:
http: //domain/myApp/input.action? firstName = alfredo O campo de entrada firstName não será preenchido.
Mas quando o resultado vier de uma validação, ele será preenchido. Gostaria de saber se o Struts 2, a fim de obter os valores que deveriam estar nos parâmetros de solicitação, pressione o objeto de parâmetro de solicitação (#parameters) e desta forma ele será preenchido.
Alguém poderia me explicar isso? Como o Struts 2 alcança esse repovoamento?
Obrigado.