このエラーページはFileNotFoundException
、のURLパターンに一致するURLを実際にリクエストした場合にのみ機能しますFacesServlet
。FacesServlet
したがって、がにマップされていると想像してください。Mojarraの場合、*.jsf
openingは実際にサブクラスをスローし、そのサブクラスは実際にエラーページに一致します。/somenotexistent.jsf
FileNotFoundException
ただし、のURLパターンと一致しないFacesServlet
URLをリクエストしている場合、リクエストは代わりに別のサーブレット、通常はコンテナ自体によって処理されますDefaultServlet
。リソースが存在しない場合、通常、例外をスローする代わりに404を返します。
それをカバーするために別のエラーページを追加したいと思います:
<error-page>
<error-code>404</error-code>
<location>/faces/error.xhtml</location>
</error-page>
<error-page>
<exception-type>java.io.FileNotFoundException</exception-type>
<location>/faces/error.xhtml</location>
</error-page>
ただし、この重複を防ぐために、からのインスタンスをキャッチして404を適切に返すサーブレットフィルターの使用を検討することもできます。JSFユーティリティライブラリOmniFacesには、すでにそのようなフィルターがあります。このようにして、最終的には404のエラーコードのエラーページのみが表示される可能性があります。FileNotFoundException
FacesServlet
FacesExceptionFilter