13

java.lang.Throwable のもの (つまり、キャッチされていない例外やエラー) がエラー ページに転送されるように、web.xml を設定しました。ただし、AJAX 化されたコンポーネントの場合、例外はこのメカニズムを介してエラー ページにルーティングされません。

私が持っているテストケースは、CommandButton常にスローするアクションメソッドに関連付けられた単純なものRuntimeExceptionです。FacesMessageアクション メソッドで例外をキャッチし、タイプ エラーの重大度を追加するのがベスト プラクティスのようです。これは人々がすることですか?AJAX化されたコンポーネントのバッキングBeanメソッドが例外をスローした場合にエラーページを表示できるようにJSFを構成する方法はありますか?

4

1 に答える 1

16

ajaxリクエストで例外が発生したときに基本的ExceptionHandlerに次のことを行うカスタムを実装する必要があります。

String errorPageLocation = "/WEB-INF/errorpages/500.xhtml";
context.setViewRoot(context.getApplication().getViewHandler().createView(context, errorPageLocation));
context.getPartialViewContext().setRenderAll(true);
context.renderResponse();

web.xmlエラーページを考慮したい場合、これは簡単なことではありません。web.xmlエラーページの場所を見つけるには、全体を解析する必要があります。また、レンダリング応答中に例外が発生した場合は、基本的にビュー全体を自分で再構築する必要があります。OmniFacesコンポーネント ライブラリには、まさにそのような例外ハンドラであるFullAjaxExceptionHandler. 完全なソース コードはここにあり、ショーケースの例はここにあります

以下も参照してください。

于 2012-05-04T14:56:50.770 に答える