0

税関のエラーページとその例外タイプに問題があります。web.xmlこのエラーページにあります。

<error-page>
    <exception-type>java.io.FileNotFoundException</exception-type>
    <location>/faces/error.xhtml</location>
</error-page>

このエラーは、リンクをクリックしてJSFファイルが存在しない場合に発生します。私の問題は、このエラーが発生したときに、Webページが私のerror.xhtmlページにリダイレクトされないことです。

これはどのように発生し、どうすれば解決できますか?

4

2 に答える 2

4

このエラーページはFileNotFoundException、のURLパターンに一致するURLを実際にリクエストした場合にのみ機能しますFacesServletFacesServletしたがって、がにマップされていると想像してください。Mojarraの場合、*.jsfopeningは実際にサブクラスをスローし、そのサブクラスは実際にエラーページに一致します。/somenotexistent.jsfFileNotFoundException

ただし、のURLパターンと一致しないFacesServletURLをリクエストしている場合、リクエストは代わりに別のサーブレット、通常はコンテナ自体によって処理されます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のエラーコードのエラーページのみが表示される可能性があります。FileNotFoundExceptionFacesServletFacesExceptionFilter

于 2012-11-22T16:24:29.800 に答える
3

いいえ、あなたが書いたように、サーブレット/ JSP /JSF/何でもがをスローするとエラーページが表示されますFileNotFoundException。404の場合、サーブレットは呼び出されないため、何もスローされません。

これを使って

<error-page>
  <error-code>404</error-code>
  <location>/the404_page.html</location>
</error-page>
于 2012-11-22T16:08:04.130 に答える