0

我正在学习 struts2 应用程序开发,感谢一些帮助实现自定义 404 页面。在我的应用程序中,

web.xml 有以下内容:

<error-page>
    <error-code>404</error-code>
    <location>/jsp/pub/error404.jsp</location>
</error-page>

struts.xml 有:

    <package name="actions-default" extends="struts-default">

    <global-results>
        <result name="exception">/jsp/pub/exception.jsp</result>
    </global-results>

    <global-exception-mappings>
        <exception-mapping exception="java.lang.Exception"
            result="exception" />
        <exception-mapping exception="java.lang.RuntimeException"
            result="exception" />
    </global-exception-mappings>

</package>

另外,在 struts.xml 中将 devMode 设置为 false

<constant name="struts.devMode" value="false" />

error404.jsp : 请点击这里查看jsfiddle的jsp源码

问题:

当我使用无效的 url 或未映射的操作点击应用程序时,我看到的是以下消息,而不是我的自定义 404 页面

"HTTP Status 404 - There is no Action mapped for namespace [/] and action name [invalidurl] associated with context path"

在应用程序控制台中,我看到以下内容:

严重:异常处理 ErrorPage[errorCode=404, location=/jsp/pub/error404.jsp] org.apache.jasper.JasperException:在第 6 行处理 JSP 页面 /jsp/pub/error404.jsp 时发生异常

6: <s:url value='/' var="contextPrefix" />

如果我删除所有“s”标签并将 error404.jsp 设置为纯 jsp 页面,那么我可以看到自定义 404 页面。我在哪里做错了?任何解决此问题的帮助都会有很大帮助。

提前致谢

小号

4

1 回答 1

0

大多数 S2 JSP 标记都希望在 S2 请求的上下文中运行。直接引用 JSP 绕过了 S2 请求过程,所以没有 valuestack,所以大多数标签都坏了。

于 2012-10-15T16:03:23.710 回答