Erro estranho no Mapping STRUTS

Olá,

Estou com um probleminha no Struts que nunca tinha visto antes.

O problema está na linha do jsp onde tenho <html:form action="/NomeDoAction.do">

Assim que a aplicação chama este jsp dá um erro como se não estivesse mapeado corretamente (conforme log mais abaixo).

Exception

javax.servlet.ServletException: Cannot retrieve mapping for action /NomeDoAction
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)

Root cause

javax.servlet.jsp.JspException: Cannot retrieve mapping for action /NomeDoAction
	org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:810)
	org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:50)

Indo um pouco mais a fundo, descompilando e debugando a classe FormTag do Struts que possui este método lookup(), percebe-se que o atributo “mappingName” recebe o valor do mapeamento corretamente ("/NomeDoAction.do"), porém o atributo “mapping”, simplesmente não consegue receber este valor, ficando null, e conseqüentemente entrando na exception (conforme abaixo):

      String mappingName = RequestUtils.getActionMappingName(action);
      mapping = (ActionMapping)moduleConfig.findActionConfig(mappingName);
        if(mapping == null) {
            Cai na Exception
        }

Fala Stone10,

Posta seu struts-config.xml aí…
a classe action também…

Valew =)

Então Zillo, para proteger informações não posso postar o código completo, mas posso assegurar que o processo de mapeamento está correto:

struts-config.xml

      <action path="/NomeDoAction" type="br.com.pacote.NomeDaClasseAction"
      name="NomeDoForm" scope="request">
          <forward name="sucesso"   path="/WEB-INF/jsp/NomeDoJSP.jsp"/>
      </action>

A classe Action faz o mapping.findForward(“sucesso”) para o path="/NomeDoAction" corretamente. Tanto que, como falei debugando os atributos carregam o valor de path e forward corretamente mas essa segunda linha do struts abaixo não recebe o valor do path, deixando o mapping null:

classe: org.apache.struts.taglib.html.FormTag

 String mappingName = RequestUtils.getActionMappingName(action); //mappingName recebe "/NomeDoAction"
 mapping = (ActionMapping)moduleConfig.findActionConfig(mappingName);  //mapping permanece null

Uma galera já deu uma boa olhada no código e tals, porém ninguém decifrou o problema ainda.

sem problemas Stone…

realmente está correto o código que você postou…

agora eu fiquei na dúvida de algo, não tentei mapear um jsp dentro do web-inf, por acaso isso não tem nada ver?

vou fazer uns testes…

falow

Stone10 o que eu vou falar pode ser algo extremamente absurdo e pode não ser o seu caso…Mas eu lembro que uma vez eu tive problema com action no struts e resolvi criando um campo hidden chamado action na página.Pode ser que não resolva mas eh algo simples de fazer e testa (eu acho…hehe)

abs

frmz arqueiros, não rolou, mas nessas horas toda ajuda é bem vinda :smiley: …existem mais sugestões para este estranho problema?