Action em Modulo - Struts

7 respostas
N

Pessoal, como referenciar uma action de um módulo, diferente do default, em html:form ?

Estou tentando algo do tipo:

...
<html:form action="salvarCv">
...

Para a action

....
<forward path="/salvarCv" ...>
...

Importante frisar que isso se trata de um módulo diferente do default. Eu não consigo fazer funcionar. O mapping “/salvarCv” nunca é encontrado.

Já tentei colocar o .do como: <html:form action=“salvarCv.do”>, não funciona.

Também já tentei colocar barra como: <html:form action="/salvarCv">, não funciona.

Tentei colocar o módulo (cv) como: <html:form action="/cv/salvarCv">, não funciona.

Alguém por favor me ajude :cry: Qual a forma correta ?

7 Respostas

L

Não entendi direito sua pergunta mas eu utilizo sem problemas, por exemplo:

&lt;html&#58;form action="/salvarCv.do" method="post"&gt;
.
.
.
&lt;/html&#58;form&gt;

flw

L

:arrow: Tu chegou a mapear o SalvarCv no teu struts-config.xml?

:wink: Talvez possa ajudar.

N

Trecho de meu web.xml:

&lt;servlet&gt;
  &lt;servlet-name&gt;action&lt;/servlet-name&gt;
  &lt;servlet-class&gt;org.apache.struts.action.ActionServlet&lt;/servlet-class&gt;
  &lt;init-param&gt;
   &lt;param-name&gt;config&lt;/param-name&gt;
   &lt;param-value&gt;/WEB-INF/struts-config.xml&lt;/param-value&gt;
  &lt;/init-param&gt;
  &lt;init-param&gt;
   &lt;param-name&gt;config/cv&lt;/param-name&gt;
   &lt;param-value&gt;/WEB-INF/struts-config-cv.xml&lt;/param-value&gt;
  &lt;/init-param&gt;

Trecho de meu struts-config-cv.xml:

&lt;struts-config&gt;
 &lt;data-sources/&gt;
 &lt;form-beans&gt;
  &lt;form-bean name="CvForm" type="org.apache.struts.action.DynaActionForm"/&gt;
  &lt;form-bean name="EnderecoForm" type="org.apache.struts.action.DynaActionForm"&gt;
   &lt;form-property name="municipio" type="java.lang.String"/&gt;
   &lt;form-property name="estado" type="java.lang.Integer"/&gt;
   &lt;form-property name="logradouro" type="java.lang.String"/&gt;
   &lt;form-property name="numero" type="java.lang.long"/&gt;
   &lt;form-property name="cep" type="java.lang.String"/&gt;
  &lt;/form-bean&gt;
 &lt;/form-beans&gt;
 &lt;global-exceptions/&gt;
 &lt;global-forwards&gt;
  &lt;forward contextRelative="true" name="novoCv" path="/cv/pages/CadCv.jsp"/&gt;
  &lt;forward contextRelative="true" name="modalEndereco" path="/cv/pages/CadEndereco.jsp"/&gt;
 &lt;/global-forwards&gt;
 &lt;action-mappings&gt;
  &lt;action path="/salvarCv" type="action.SalvarCvAction"&gt;
   &lt;forward contextRelative="true" name="SUCESSO" path="/cv/pages/CadCv.jsp"/&gt;
  &lt;/action&gt;
  &lt;action name="EnderecoForm" path="/cadEndereco" type="action.CadastrarEnderecoAction"/&gt;
 &lt;/action-mappings&gt;
 &lt;controller/&gt;
&lt;/struts-config&gt;

O meu form no jsp usando tags struts:

...
&lt;html&#58;form action="salvarCv.do"&gt;
...

A exceção que ocorre:

exception 

org.apache.jasper.JasperException&#58; Cannot retrieve mapping for action /salvarCv
	at org.apache.jasper.servlet.JspServletWrapper.service&#40;JspServletWrapper.java&#58;254&#41;
	at org.apache.jasper.servlet.JspServlet.serviceJspFile&#40;JspServlet.java&#58;295&#41;
	at org.apache.jasper.servlet.JspServlet.service&#40;JspServlet.java&#58;241&#41;
	at javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;853&#41;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter&#40;ApplicationFilterChain.java&#58;247&#41;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter&#40;ApplicationFilterChain.java&#58;193&#41;
	at org.apache.catalina.core.StandardWrapperValve.invoke&#40;StandardWrapperValve.java&#58;256&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;643&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;480&#41;
	at org.apache.catalina.core.ContainerBase.invoke&#40;ContainerBase.java&#58;995&#41;
	at org.apache.catalina.core.StandardContextValve.invoke&#40;StandardContextValve.java&#58;191&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;643&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;480&#41;
	at org.apache.catalina.core.ContainerBase.invoke&#40;ContainerBase.java&#58;995&#41;
	at org.apache.catalina.core.StandardContext.invoke&#40;StandardContext.java&#58;2415&#41;
	at org.apache.catalina.core.StandardHostValve.invoke&#40;StandardHostValve.java&#58;180&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;643&#41;
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke&#40;ErrorDispatcherValve.java&#58;171&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;641&#41;
	at org.apache.catalina.valves.ErrorReportValve.invoke&#40;ErrorReportValve.java&#58;172&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;641&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;480&#41;
	at org.apache.catalina.core.ContainerBase.invoke&#40;ContainerBase.java&#58;995&#41;
	at org.apache.catalina.core.StandardEngineValve.invoke&#40;StandardEngineValve.java&#58;174&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;643&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;480&#41;
	at org.apache.catalina.core.ContainerBase.invoke&#40;ContainerBase.java&#58;995&#41;
	at org.apache.coyote.tomcat4.CoyoteAdapter.service&#40;CoyoteAdapter.java&#58;223&#41;
	at org.apache.coyote.http11.Http11Processor.process&#40;Http11Processor.java&#58;594&#41;
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection&#40;Http11Protocol.java&#58;392&#41;
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt&#40;PoolTcpEndpoint.java&#58;565&#41;
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run&#40;ThreadPool.java&#58;619&#41;
	at java.lang.Thread.run&#40;Thread.java&#58;536&#41;


root cause 

javax.servlet.ServletException&#58; Cannot retrieve mapping for action /salvarCv
	at org.apache.jasper.runtime.PageContextImpl.handlePageException&#40;PageContextImpl.java&#58;533&#41;
	at org.apache.jsp.CadCv_jsp._jspService&#40;CadCv_jsp.java&#58;97&#41;
	at org.apache.jasper.runtime.HttpJspBase.service&#40;HttpJspBase.java&#58;137&#41;
	at javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;853&#41;
	at org.apache.jasper.servlet.JspServletWrapper.service&#40;JspServletWrapper.java&#58;210&#41;
	at org.apache.jasper.servlet.JspServlet.serviceJspFile&#40;JspServlet.java&#58;295&#41;
	at org.apache.jasper.servlet.JspServlet.service&#40;JspServlet.java&#58;241&#41;
	at javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;853&#41;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter&#40;ApplicationFilterChain.java&#58;247&#41;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter&#40;ApplicationFilterChain.java&#58;193&#41;
	at org.apache.catalina.core.StandardWrapperValve.invoke&#40;StandardWrapperValve.java&#58;256&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;643&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;480&#41;
	at org.apache.catalina.core.ContainerBase.invoke&#40;ContainerBase.java&#58;995&#41;
	at org.apache.catalina.core.StandardContextValve.invoke&#40;StandardContextValve.java&#58;191&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;643&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;480&#41;
	at org.apache.catalina.core.ContainerBase.invoke&#40;ContainerBase.java&#58;995&#41;
	at org.apache.catalina.core.StandardContext.invoke&#40;StandardContext.java&#58;2415&#41;
	at org.apache.catalina.core.StandardHostValve.invoke&#40;StandardHostValve.java&#58;180&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;643&#41;
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke&#40;ErrorDispatcherValve.java&#58;171&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;641&#41;
	at org.apache.catalina.valves.ErrorReportValve.invoke&#40;ErrorReportValve.java&#58;172&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;641&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;480&#41;
	at org.apache.catalina.core.ContainerBase.invoke&#40;ContainerBase.java&#58;995&#41;
	at org.apache.catalina.core.StandardEngineValve.invoke&#40;StandardEngineValve.java&#58;174&#41;
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext&#40;StandardPipeline.java&#58;643&#41;
	at org.apache.catalina.core.StandardPipeline.invoke&#40;StandardPipeline.java&#58;480&#41;
	at org.apache.catalina.core.ContainerBase.invoke&#40;ContainerBase.java&#58;995&#41;
	at org.apache.coyote.tomcat4.CoyoteAdapter.service&#40;CoyoteAdapter.java&#58;223&#41;
	at org.apache.coyote.http11.Http11Processor.process&#40;Http11Processor.java&#58;594&#41;
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection&#40;Http11Protocol.java&#58;392&#41;
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt&#40;PoolTcpEndpoint.java&#58;565&#41;
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run&#40;ThreadPool.java&#58;619&#41;
	at java.lang.Thread.run&#40;Thread.java&#58;536&#41;
L

Olá net_sandro, cara seguinte, estava dando uma olhada e percebi que não tem o mapeamento para a extensão “.do” no WEB.xml.

Acredito eu, que isto possa ajudar:

// no WEB.xml
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;action&lt;/servlet-name&gt;
&lt;url-pattern&gt;*.do&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

Qualquer coisa posta aí novamente. :wink:

N

Valeu Lucas, mas não é isso.

Eu escrevi apenas um trecho do web.xml, o mapeamento *.do está lá.

Ele funciona, quando eu chamo um forward global (novoCv), eu chego até o JSP que dá pau.
:cry:

R

Seguinte, ao invez de criar sua configuração no struts-config-cv.xml
faz no struts-config.xml
so pra ver se vai funfar !!

[]s
Daniel

N

Descobri :idea:

Estava pisando na bola com Struts.

Estava fazendo um forward global para um jsp que possuia um form. Isso não pode, pois o form só é criado (se não existe) antes de disparar uma “Action” não em um forward.

O caminho então seria chamar o jsp após uma action que possui o Form que eu pretendo usar.

Valeu

:roll:

Criado 3 de março de 2004
Ultima resposta 3 de mar. de 2004
Respostas 7
Participantes 4