处理错误Struts 2中的页面

时间:2012-11-20 14:35:34

标签: http exception error-handling struts2 struts

每当我输入URL localhost:8443 / context / anyname.anyextension时我得到状态404(未找到)但是当我尝试类似localhost:8443 / context / anynameWithouthExtensions之类的东西时,Struts 2似乎试图映射到一个动作然后我收到错误500(内部服务器错误)。我不应该总是通过两种方法获得404的状态吗?

2 个答案:

答案 0 :(得分:0)

我认为这是Struts 2尝试将URL映射到操作的结果。当你提供“.anyextension”时,知道它不是一个有效的Struts 2动作,除非你附加“.action”作为扩展名(这是Struts 2使用的默认扩展名)。任何其他,它知道它不是一个Struts 2调用。同样,我认为缺少扩展是Struts 2的默认设置,它会尝试查找操作,但由于没有有效的操作,它会失败。

您可以通过将自定义扩展添加到struts.xml来添加自定义扩展:

<constant name="struts.action.extension" value=",action,do" />

此外,您可以向Struts添加一些错误处理程序,以便在有效操作的情况下返回404代码,但这将属于另一个问题。

谢谢, 安迪

答案 1 :(得分:0)

您可能使用了<default-action-ref,这是对用于 命名空间的所有UN匹配请求的默认操作的引用。 对于该命名空间,您有一些规则指定只有没有扩展名的URL 处理。

看看这个:

文档:http://struts.apache.org/2.1.6/docs/action-configuration.html

<package name="Hello" extends="action-default">

    <default-action-ref name="UnderConstruction">

    <action name="UnderConstruction">
        <result>/UnderConstruction.jsp</result>
    </action>

并最终发布您的配置。

如果是这种情况,我预计即使有

也有404
localhost:8443/context/SOME_INVENTED_PATH/anynameWithouthExtensions

因为默认操作ref可能只绑定到root。

并且默认操作会出错,当然......