Tava lendo o Livro Struts em Ação, e nele mstra que quando tenho um formulario com varios botoes, tem varias formas de informar ao ActionServlet qual o botao eu selecionei, bem a melhor maneira q achei foi usando a classe DispatchAction. olhe o codigo dela:
package app;
import org.apache.struts.actions.*;
import org.apache.struts.action.*;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class CadastrarDispacthAction extends DispatchAction{
public ActionForward cadastrar(ActionMapping map, ActionForm form, HttpServletRequest req,
HttpServletResponse res) throws IOException, ServletException{
PrintWriter out = res.getWriter();
out.print("cadastrar");
return map.findForward("sucesso");
}
public ActionForward alterar(ActionMapping map, ActionForm form, HttpServletRequest req,
HttpServletResponse res) throws IOException, ServletException{
PrintWriter out = res.getWriter();
out.print("alterar");
return map.findForward("sucesso");
}
public ActionForward excluir(ActionMapping map, ActionForm form, HttpServletRequest req,
HttpServletResponse res) throws IOException, ServletException{
PrintWriter out = res.getWriter();
out.print("excluir");
return map.findForward("sucesso");
}
}
o metodo escolhido e passado através do parametro parameter da tag action, o o valor method é passado através do formulario. O problema é o seguinte, quando coloco a tag forward aninhada a actio da erro, mas como faço entao para quando o metodo cadastrar for chamado(classe CadastrarDispatchAction) retorne um ActionForward encaminhando para outra pagina?
<action path="/cadastrar-empresa" forward="/jsp/cad_empresa.jsp" />
<action path="/cadastrar_empresa"
type="app.CadastrarDispacthAction"
name="cadastrarEmpresaForm"
scope="request"
validate="true"
input="/cadastrar-empresa.do"
parameter="method">
<forward name="sucesso" path="/jsp/Welcome.jsp" />
</action>
parte do formulario
<tr>
<td width="375"><div align="right">
<html:submit styleClass="botao" property="method"><bean:message key="botao.cadastrar" /></html:submit></div></td>
<td width="126"><div align="center">
<html:submit styleClass="botao" property="method"><bean:message key="botao.alterar" /></html:submit></div></td>
<td width="329"><html:submit styleClass="botao" property="method"><bean:message key="botao.excluir" /></html:submit></td>
</tr>
erro q ta dando
exception
javax.servlet.ServletException: Cannot create rewrite URL: java.net.MalformedURLException: Cannot retrieve ActionForward named logon
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:845)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:778)
org.apache.jsp.jsp.Welcome_jsp._jspService(org.apache.jsp.jsp.Welcome_jsp:114)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
javax.servlet.jsp.JspException: Cannot create rewrite URL: java.net.MalformedURLException: Cannot retrieve ActionForward named logon
org.apache.struts.taglib.html.LinkTag.calculateURL(LinkTag.java:479)
org.apache.struts.taglib.html.LinkTag.doStartTag(LinkTag.java:334)
org.apache.jsp.jsp.Welcome_jsp._jspx_meth_html_link_0(org.apache.jsp.jsp.Welcome_jsp:231)
org.apache.jsp.jsp.Welcome_jsp._jspService(org.apache.jsp.jsp.Welcome_jsp:98)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)