o struts-config:
<struts-config>
<data-sources />
<form-beans >
<form-bean name="registroBean" type="com.pix.struts.formbean.RegistroBean" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action scope="request" name="registroBean" path="/action/registra" type="com.pix.struts.actions.RegistraAction">
<forward name="erro" path="/index.jsp" redirect="true"/>
<forward name="sucesso" path="/WEB-INF/sucesso.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.pix.struts.ApplicationResources" />
</struts-config>
Em caso de erro, ele retorna ao index.jsp que é onde está o meu form.
O form da index.jsp:
<html:form method="POST" action="/registra">
<div align="center"><span style="color:red">${registroBean.mensagem}</span></div>
<table align="center" width="200" border="1">
<tbody>
<tr>
<td>Usuário</td>
<td><html:text size="20" property="userName" maxlength="50"></html:text></td></tr>
<tr>
<td>Senha</td>
<td><html:password redisplay="false" size="20" property="senha" maxlength="50" ></html:password></td>
</tr>
<tr align="center">
<td colspan="2"><html:submit value="Envia" /></td>
</tr>
</tbody></table>
</html:form>
O registro bean é apenas um bean normal com os métodos setter e getter de userName, senha e mensagem.
Método execute da action:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
RegistroBean rb = (RegistroBean) form;
String uName = rb.getUserName();
String senha = rb.getSenha();
//Se a senha tiver menos de 4 caracteres ou o nome de usuário tiver menos de
//6 caracteres, será enviado para a página de erro
if(senha == null || senha.length() < 4 ){
criaMensagem(request, "Senha inválida!");
return mapping.findForward("erro");
}else if( uName == null || uName.length() < 6){
criaMensagem(request, " > Usuário inválido! <");
return mapping.findForward("erro");
}else{
return mapping.findForward("sucesso");
}
}
Nesse exemplo eu quero digitar valores no formulário e se caso haja algum erro voltar ao formulário (index.jsp) com os valores preenchidos.
Porém se o bean é do tipo scope=“request” ele não me traz os valores que eu digitei, e sim coloca os valores padrões(em branco). Se eu coloco ele como scope=“session” ele traz os valores corretos. Alguém poderia ajudar??