Struts2 全局异常 - 原始异常源

Struts2 Global Exception - Original Exception Source

我在 Struts 2 中使用全局异常映射如下:

<global-exception-mappings>
    <exception-mapping exception="java.lang.Exception" result="exception" />
</global-exception-mappings>

<!-- ******* ACTIONS ******  -->
<action name="timeout" class="errorAction">
    <interceptor-ref name="carsBasic" />
    <interceptor-ref name="defaultStack" />
<result name="input">/WEB-INF/jsp/index.jsp</result>
</action>

流程很完美,但我想知道如何获取抛出异常的 Action(希望是方法)。

timeOut 操作 class 中,执​​行方法正确地添加了一个 actionMessage 指示 'an error' 但在这里我想添加的代码是 logged/emailed 向我展示违规的 class 和方法。

它存储在某个地方吗?我如何访问它?

要记录异常,您需要使用一些记录器,例如 log4j。可以配置一些允许发送电子邮件的附加程序。

当异常发生并由 exception 拦截器处理时,它将值存储到值堆栈中。存储的值:

  • exception: The exception object itself
  • exceptionStack: The value from the stack trace

您可以配置将处理异常的操作并记录这些值以从值堆栈中检索它们,并配置全局结果以在处理异常时执行。此结果可以是 chain 类型,其中前一个操作的值在下一个操作的值堆栈中。

<global-results>
    <result name="exception" type="chain">ExceptionAction</result>
</global-results>