继续线程: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中,它们是不同的..............