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サーブレットです。

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サーブレットに直接アクセスしようとすると、正常に機能します。Tomcatエラーページが表示されます。

それで、その理由はJSFエラー処理メカニズムだと思いますか?私は何が間違っているのですか?

4

1 に答える 1

0

アプリ サーバーのデフォルトのエラー ページを表示する場合は、web.xml からエラー ページのエントリを削除し、コンテキストの init-parameter javax.faces.PROJECT_STAGE を Production に設定します。

于 2012-08-06T14:24:32.457 に答える