1

JSF 2.1 でエラーを処理する適切な方法は何ですか? さまざまなことを示唆する多くの投稿を見てきましたが、私の推測では、ほとんどが以前のバージョンの JSF に関するものです。特定のエラーの特定のエラー ページと、その他すべてのエラーの一般的なエラー ページを表示するための基本的なエラー処理だけが必要です。2.1で見つけたのは、web.xmlに次のものを入れていることです:

<error-page>
    <error-code>404</error-code>
    <location>/faces/error.xhtml</location>
</error-page>

これは正しいです?エラーをスローする適切な方法は何ですか? それはありますか:

throw new WebApplicationException(Response.Status.NOT_FOUND);

上記の方法を使用すると、エラーがサーブレットに伝播し、サーバーに記録されます。サーブレットに伝播する例外をスローせずにエラーを処理する方法はありますか?

4

1 に答える 1

0

サーブレットに伝播する例外をスローせずにエラーを処理する方法はありますか?

そのために使えますExternalContext#responseSendError()

externalContext.responseSendError(HttpServletResponse.SC_NOT_FOUND, "some message");
facesContext.responseComplete();

これは JSF 2.1 に固有のものではないことに注意してください。これは、JSF 2.0 以前にも同様に適用されます。また、この慣行は一般に、例外を処理する通常の慣行ではないことに注意してください (たとえば、実際に例外をキャッチしました。エラー ページは、例外がまったくスローされなかった事前チェックの失敗の結果ではありません)。throws通常は、例外をスローするか、JSF アクション メソッドのように再宣言して手放し、 <error-page><exception-type>inweb.xmlで処理します。ExceptionHandlerカスタム実装が必要なのは JSF ajax リクエストの例外処理だけですが、それは別の話です。

于 2012-08-20T13:42:45.323 に答える