Action em Modulo - Struts

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 ?

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

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

flw

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

:wink: Talvez possa ajudar.

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=&quot;CvForm&quot; type=&quot;org.apache.struts.action.DynaActionForm&quot;/&gt;
  &lt;form-bean name=&quot;EnderecoForm&quot; type=&quot;org.apache.struts.action.DynaActionForm&quot;&gt;
   &lt;form-property name=&quot;municipio&quot; type=&quot;java.lang.String&quot;/&gt;
   &lt;form-property name=&quot;estado&quot; type=&quot;java.lang.Integer&quot;/&gt;
   &lt;form-property name=&quot;logradouro&quot; type=&quot;java.lang.String&quot;/&gt;
   &lt;form-property name=&quot;numero&quot; type=&quot;java.lang.long&quot;/&gt;
   &lt;form-property name=&quot;cep&quot; type=&quot;java.lang.String&quot;/&gt;
  &lt;/form-bean&gt;
 &lt;/form-beans&gt;
 &lt;global-exceptions/&gt;
 &lt;global-forwards&gt;
  &lt;forward contextRelative=&quot;true&quot; name=&quot;novoCv&quot; path=&quot;/cv/pages/CadCv.jsp&quot;/&gt;
  &lt;forward contextRelative=&quot;true&quot; name=&quot;modalEndereco&quot; path=&quot;/cv/pages/CadEndereco.jsp&quot;/&gt;
 &lt;/global-forwards&gt;
 &lt;action-mappings&gt;
  &lt;action path=&quot;/salvarCv&quot; type=&quot;action.SalvarCvAction&quot;&gt;
   &lt;forward contextRelative=&quot;true&quot; name=&quot;SUCESSO&quot; path=&quot;/cv/pages/CadCv.jsp&quot;/&gt;
  &lt;/action&gt;
  &lt;action name=&quot;EnderecoForm&quot; path=&quot;/cadEndereco&quot; type=&quot;action.CadastrarEnderecoAction&quot;/&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=&quot;salvarCv.do&quot;&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;

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:

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:

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

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: