Struts 2 HTTP错误代码的全局异常映射

时间:2013-08-24 10:43:45

标签: java exception struts2 error-handling http-error

是否可以处理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>

是否有任何插件或拦截器可以做到这一点?

3 个答案:

答案 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-defaultdefaultStack中定义。

答案 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" />