继续线程:Global exception page in Apache Tiles and Spring MVC

我的web.xml中定义了一个错误页面:

<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/jsp/404.jsp</location>
</error-page>


我注意到Spring MVC中还有一个问题:

一种)
如果没有@RequestMapping匹配,那么的确会打印我的自定义错误jsp。

b)
如果@RequestMapping匹配,但是该方法设置错误状态,例如。

response.setStatus(404);


然后选择Tomcat的(7.0.29)默认错误页面,而不是我的jsp。

为什么?如何使我的404页面始终显示?

最佳答案

我认为您遇到的问题是由您提到的一行引起的:response.setStatus(404);

此方法不会触发容器的错误页面机制,应在没有错误的情况下使用。要触发该机制,您必须使用sendError,这是官方文档中建议的。

顺便说一句,我刚刚发现Servlet Spec之间的行为有所不同。 2.3和2.4
read here)。在2.3中,这两种方法据说具有相同的作用,而在2.4中,它们是不同的..............

09-09 22:29
查看更多