例外がスローされたときに、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エラー処理メカニズムだと思いますか?私は何が間違っているのですか?