2012-05-09 3 views
3

が、私はとても似web.xmlに設定を使用してカスタムエラー404ページを提供することが可能であることを理解:JSFを使用してHTTPエラーコードページと例外エラーページを生成しますか?

<error-page> 
     <error-code>404</error-code> 
     <location>/NotFound.jsp</location> 
</error-page> 

を私は多くのエラー・コードのウェブページが非常に似ていますことを期待しかし - 唯一のエラーコードとテキストが変更されます。

過剰な数のファイルを減らして再利用するためには、一般的なHTMLとCSSの優位性を持つ汎用ページにパラメータを渡すと良いでしょう。

Apache MyFacesを使用し、ExceptionHandlerFactory(here)について読んだことがありますが、エラーコードの規定がないことがわかりました。

エラーコードページをカスタマイズできる絶対的な方法は、カスタマイズしたいエラーコードごとに1つずつ作成し、web.xmlを使用してワイヤリングすることですか? 。

<error-page> 
    <location>/error.jsf</location> 
</error-page> 

あなたはサーブレットを実行している場合::-(

答えて

7

エラーページがちょうどJSFページすることができますが、サーブレット3.0対応の容器を実行している場合は、グローバルエラーページを持つことができます2.5コンテナ以前であるか、または今のところdoesn'tにグローバルエラーページが実装されているTomcat 7を使用した場合、ステータスコードごとに別々のエラーページを指定する必要がありますが、すべて同じエラーページを指し示すことができます。

<error-page> 
    <status-code>404</status-code> 
    <location>/error.jsf</location> 
</error-page> 
<error-page> 
    <status-code>500</status-code> 
    <location>/error.jsf</location> 
</error-page> 

ステータスコードと例外の種類は、EL availabにあります次のように入力します。

Status code: #{requestScope['javax.servlet.error.status_code']} 
Exception type: #{requestScope['javax.servlet.error.exception_type']} 

必要に応じて、条件付きでこれを行うことができます。例外のデフォルトでは、常にステータスコードが500であることに注意してください。

JSPの後継Faceletsを使用している場合は、テンプレート作成がさらに簡単になります。

+0

TomCatがグローバルエラーページを実装していない非常に有用な情報です。 +1とジェネリックページ内で使用するrequestScopeパラメータ - 正確には私の後ろにあり、非常に軽量です。より焦点を絞った例外関連のエラーページについては、例外ハンドラでExceptionのタイプを調べ、それに応じて特注ページに誘導することができます。もう一度BalusCに感謝します。 – 8bitjunkie

+1

例外ハンドラに関しては、['FullAjaxExceptionHandler'](https://showcase-omnifaces.rhcloud.com/showcase/exceptionhandlers/FullAjaxExceptionHandler.xhtml)も興味深いかもしれません。 – BalusC

+1

FWIW:最終的にグローバルエラーページは、バージョン7.0.29のTomcat 7でもサポートされています。 – BalusC

関連する問題