我有一个混合Struts 1和Struts 2应用程序。我的Struts 1应用程序具有以下异常处理程序:
<global-exceptions>
<exception type="java.lang.Exception" handler="myClass" />
</global-exceptions>
<global-forwards>
<forward name="error" path="/error.jsp" module="/" />
</global-forwards>
我正在尝试在应用程序的Struts 2部分中完成类似的映射。这就是我现在所拥有的:
<global-results>
<result name="myErrorHandler" type="redirectAction">
<param name="actionName">myErrorAction</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="myErrorHandler" />
</global-exception-mappings>
<action name="myErrorAction" class="myErrorAction">
<result name="error">/error.jsp</result>
</action>
但是,每当我测试我的错误处理程序时,我都会得到一个无限循环(myErrorAction一直在调用自己)。有没有更好的方法在Struts 2中设置全局异常处理程序?我的操作有自定义代码,用于创建特殊的日志条目,并构建错误消息以在jsp页面上显示给用户。
答案 0 :(得分:1)
您是否100%确定myErrorAction
(或您的error.jsp
)没有抛出异常?这将解释无限循环。
在这方面,应该非常谨慎地处理异常的资源是完全确定的。