3

我想在抛出异常时在 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错误处理机制?我究竟做错了什么?

4

1 回答 1

0

如果要显示应用服务器的默认错误页面,只需从 web.xml 中删除错误页面条目并将上下文 init-parameter javax.faces.PROJECT_STAGE 设置为 Production。

于 2012-08-06T14:24:32.457 回答