Struts 2 não redireciona para a página mapeada para exceção

Olá pessoal,

Estou usando Struts 2 em meu projeto e estou trabalhando com invocação dinâmica de métodos na minha action.
O que acontece é que quando ocorre uma exceção de runtime, por exemplo, uma exceção java.lang.UnsupportedOperationException,
em um método invocado dinâmicamente, ou seja, qualquer um exceto o método execute(), o mecanismo de manipulação de
exceções do Struts 2 não redireciona o result para a página que eu defini.
Segue abaixo para maior clareza um snippet do meu arquivo struts.xml:

<action name="*crisis" class="fend.config.CrisisAction" method="{1}"> <exception-mapping result="fail" exception="java.lang.Exception"/> <result name="success">/testCrisis.jsp</result> <result name="dummy">/dummy.jsp</result> <result name="fail">/error.jsp</result> <interceptor-ref name="configStack"/> </action>

Para testar, por exemplo, eu lancei uma exceção em um desses métodos dinânimos, digamos, por exemplo, método view().
Logo, para chamá-lo sigo para http://localhost:8080/app/viewcrisis.action
Assim, o struts deveria redirecionar para o result de name “fail”, renderizando a página error.jsp, mas não ocorre e abre a
página de nome “success” testCrisis.jsp.

Quando eu lanço a mesma exceção no método execute(), o struts redireciona para a página de erro corretamente.
O que foi que eu deixei passar?

Se alguém puder me ajudar agradeço muito, pois estou empacado nisso.

Abraços.

E ai leossa tudo bem?

cara to super enferrujado mas vamos:

cara tenta mapear como global e vê no que da…

/Login.action /Exception.jsp
    <global-exception-mappings>
        <exception-mapping exception="java.sql.SQLException" result="SQLException"/>
        <exception-mapping exception="java.lang.Exception" result="Exception"/>
    </global-exception-mappings>

algo assim como tirei da pagina http://struts.apache.org/2.0.14/docs/exception-configuration.html

pelo que entendi se você mapear numa action só serão pegas essas exceptions se forem dessa action, como você coloca um action que não existe provavelmente ele não
pegue a excessao eu acho :roll:

[quote=acjZer0]E ai leossa tudo bem?

cara to super enferrujado mas vamos:

cara tenta mapear como global e vê no que da…

/Login.action /Exception.jsp
    <global-exception-mappings>
        <exception-mapping exception="java.sql.SQLException" result="SQLException"/>
        <exception-mapping exception="java.lang.Exception" result="Exception"/>
    </global-exception-mappings>

algo assim como tirei da pagina http://struts.apache.org/2.0.14/docs/exception-configuration.html

pelo que entendi se você mapear numa action só serão pegas essas exceptions se forem dessa action, como você coloca um action que não existe provavelmente ele não
pegue a excessao eu acho :roll: [/quote]

E aí acjZer0! Obrigado pela resposta! Tá dificíl mesmo, acho que estão me faltando conceitos pra me aprofundar mais.

Bom, eu li este tutorial da Apache, mas não funcionou aqui. Só funciona quando a exceção é gerada no método execute da action.

Talvez seja isso aí mesmo que você disse, porque como é um wildcard no meio do nome, o struts pode ser que não pegue…
Mas olha só que curioso, se eu mapear a exception com result de type=“chain” pra uma outra action, ele executa o método desta outra
action mas não mostra a página associada a ela… (mapeada no xml) :?:

eu acho que por causa do wild, esse wild e uma MER#@ assim, eu utilizei o Struts 2 no meu projeto final com wild para você ver a porcaria das validações não funcionaram ficou uma porcaria, e por isso tive que fazer um frameworkzinho de validações, portanto se você tiver oportunidade fuja dos wilds com o Struts2