Struts + Validation.xml + Edição de Formulário

1 resposta
the_negao

Pessoal,

Eu tenho o seguinte exemplo:
1) Dados de um membro (Nome... + endereço) gravados no BD.
2) Através do link http://localhost:8080/App/membro/edit.java?id=1 eu carrego o membro de código = 1 no form através de Expression Language, buscando a session.

O meu problema está quando eu tento fazer a validação no servidor das informações atualizadas desse form, porque o mapeamento da minha action faz validate = true e input = /membro/edit.java

<action path="/membro/edit" type="app.membro.MembroEditAction">
        <forward name="sucess" path="/pages/Membro_Edit.jsp" redirect="false"/>
        <forward name="error" path="/Error.java" redirect="false"/>
</action>


<action path="/membro/update" type="webigreja.membro.MembroUpdateAction" name="form_membro" scope="request" validate="true" input="input">
        <forward name="input" path="/membro/edit.java" redirect="false"/>
        <forward name="sucess" path="/membro/list.java" redirect="true"/>
        <forward name="error" path="/Error.java" redirect="false"/>
</action>
Meu MembroEditAction:
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
    try {
        Membro membro = new Membro();
        membro= new MembroDAO().getMembroById(Integer.parseInt(request.getParameter("id")));
        request.getSession().setAttribute(Constante.KEY_MEMBRO_EDIT, membro);
        return mapping.findForward(Constante.FORWARD_SUCESSO);
    } catch (Exception ex) {
        return mapping.findForward(Constante.FORWARD_ERRO);
    }
}
Exception:
10:12:06,890 ERROR MembroEditAction:27 -
java.lang.NumberFormatException: null
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at app.membro.MembroEditAction.execute(MembroEditAction.java:23)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
	at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1062)
	at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
	at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
	at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:963)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at app.MyFilter.doFilter(MyFilter.java:23)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:833)
	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1285)
	at java.lang.Thread.run(Unknown Source)

Pessoal, não sei se ficou claro o que quero, mas quem puder me ajudar eu agradeço... Ou me mostrar qual é a melhor forma de fazer um form de Edição com validação..

Ps.: A Exception lançada é porque quando dá erro de validação, a minha action chama novamente a página /membro/edit.java mas não passa nenhum parametro...

Agradeço...

1 Resposta

the_negao

Ressuscitando esse post…

Reformulando… Qual é a melhor formar de carga os dados do Banco de Dados em um formulário para um Update dos dados? Porém o Validation.xml (no Servidor) deve funcionar para se detectado um erro a página permaneça com os dados errados e informe onde deve ser corrigodo!

Agradeço… espero que alguém possa me ajudar!

Criado 8 de setembro de 2006
Ultima resposta 20 de set. de 2006
Respostas 1
Participantes 1