是否可以处理web.xml
中定义的错误页面,作为Struts 2操作中的global-exception-mappings
。
例如,而不是
<error-page>
<error-code>404</error-code>
<location>/common/jsp/FilkeNotFine.jsp</location>
</error-page>
定义如下内容:
<global-exception-mppings>
<exception-mapping ErrorCode="404" result="internernal-error" />
</global-exception-mppings>
是否有任何插件或拦截器可以做到这一点?
答案 0 :(得分:2)
当然你可以
<global-results>
<result name="error">/common/jsp/FilkeNotFine.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>
拦截器exception
在包struts-default
和defaultStack
中定义。
答案 1 :(得分:0)
我搜索并凭据自己的知识,恕我直言,没有办法做到这一点。 Struts2不是投掷404的人,它是网络服务器。 Struts2将抛出异常。
RomanC的回答清楚地解释了如何处理异常,但是你期待的却无法100%满足。
相反,你可以尝试这样的事情:
<error-page>
<error-code>404</error-code>
<location>/common/jsp/my404.action</location>
</error-page>
然后你可以将my404映射到你的struts xml中的某些动作。
虽然我不确定它是否可行,但我猜它依赖于服务器。 在这种情况下不能使用IMHO动态资源,因为服务器要求该文件实际存在。
如果发生这种情况,你只需在你的web-root中创建一个名为my404.action的文件,然后struts2将处理其余的文件,如果你理解我在说什么。
未经测试,但应该可以使用。
答案 2 :(得分:0)
您必须先从struts.xml将devMode更改为false,以便现在可以使用404页面。
<constant name="struts.devMode" value="false" />