1

web.xml是否可以像global-exception-mappingsStruts 2 中的操作那样处理定义在 中的错误页面。例如,而不是

<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>

有没有可以做到这一点的插件或拦截器?

4

3 回答 3

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.

于 2013-08-24T10:52:57.520 回答
0

我搜索并以我自己的知识,恕我直言,没有办法做到这一点。Struts2 不是抛出 404 的那个,它是 web 服务器。Struts2 会抛出异常。

RomanC 的回答清楚地解释了如何处理异常,但是您所期待的,不能 100% 得到满足。

相反,您可以尝试这样的事情:

<error-page>
    <error-code>404</error-code>
    <location>/common/jsp/my404.action</location>
</error-page>

然后您可以将 my404 映射到您的 struts xml 中的某些操作。

虽然我不确定它是否可行,但我想它取决于服务器。恕我直言,动态资源不能在这种情况下使用,因为服务器要求该文件物理存在。

如果发生这种情况,你可以简单地在你的 web-root 中创建一个名为 my404.action 的文件,然后 struts2 将处理其余的,如果你明白我在说什么的话。

未经测试,但应该可以工作。

于 2013-08-24T18:35:32.943 回答
0

您必须首先将 struts.xml 中的 devMode 更改为 false,以便您现在可以使用 404 页面。

<constant name="struts.devMode" value="false" /> 
于 2014-12-03T04:07:07.123 回答