我想在抛出异常时在 JSF 2.0 (MyFaces) 应用程序中显示默认的 Tomcat 错误页面。
我在 web.xml 中添加了以下几行:
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/ErrorHandler</location>
</error-page>
<context-param>
<param-name>org.apache.myfaces.ERROR_HANDLING</param-name>
<param-value>false</param-value>
</context-param>
这是ErrorHandler servlet:
public class ErrorHandler extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
"Error");
}
}
但不是默认的 Tomcat 错误页面,而是显示一个空白页面,错误代码为 500。
当我尝试通过 URL 直接访问 ErrorHandler servlet 时,它工作正常:显示 Tomcat 错误页面。
所以我猜原因是JSF错误处理机制?我究竟做错了什么?