Tengo Struts 2 configurado para redirigir cualquier java.lang.Exception a una acción especial que registra la excepción. Mi redirección funciona, pero mi acción siempre obtiene una excepción nula (incluso cuando expulso explícitamente una excepción). Aquí está mi archivo struts.xml:Mapeo Struts 2 Exception Handler para una Acción
<global-results>
<result name="errHandler" type="chain">
<param name="actionName">errorProcessor</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="errHandler" />
</global-exception-mappings>
<action name="errorProcessor" class="myErrorProcessor">
<result name="error">/error.jsp</result>
</action>
<action name="throwExceptions" class="throwExceptions">
<result name="success">done.jsp</result>
</action>
En mi procesador de error, tengo el siguiente:
public class myErrorProcessor extends ActionSupport {
private Exception exception;
public String execute() {
System.out.println("null check: " + (exception == null));
return "error";
}
public void setException(Exception exception) {
this.exception = exception;
}
public Exception getException() {
return exception;
}
}
En la clase throwsException, Tengo el siguiente:
public String execute() {
int x = 7/0;
return "success";
}
Cuando Ejecuto mi programa, el controlador de excepciones siempre obtiene una excepción nula. Estoy usando el tipo de cadena para redirigir al manejador de excepciones. ¿Debo implementar algún tipo de interfaz ExceptionAware? ¿El setter de excepciones de Struts 2 se llama algo además de setException?
Nota: Intenté seguir this tutorial al escribir este programa.
He proporcionado un ejemplo que duplica el comportamiento del tutorial vinculado, sin embargo, incluye todos los archivos necesarios en su totalidad para reducir la posibilidad de error. – Quaternion