0

I would like to dynamically set an error page in JSF. Specifically what I would like to do is whenever I get a ViewExpiredException to refresh the page. I am currently using omnifaces FullAjaxExceptionHandler to manage my exception but it reads the error pages from web.xml.

Is there an easy way to do this? Should I consider client side navigation by using onError event or just overwrite FullAjaxExceptionHandler.findErrorPageLocation ?

4

1 に答える 1

1

web.xml最初に JSF ajax を使用しなかった場合の標準的な使用方法であるため、エラーページを読み取ります。つまり、、 またはを使用せずに ajax を使用しない場合、またはエンドユーザーが JS を無効にFullAjaxExceptionHandlerしている場合とまったく同じように、例外処理とエラー ページの表示が確実に行われます。<h:commandButton><f:ajax><p:commandButton ajax="false">

例外ハンドラーを拡張してメソッドをオーバーライドすることで実際に制御できますがfindErrorPageLocation、標準の方法と同じように動作しなくなります。

または、特定のケースではおそらくより良い方法は、特定のエラーページを指定しViewExpiredExceptionて、通常のリクエスト属性で最初のページを取得し、JavaScript がページの読み込み時にそこにリダイレクトするようにすることです。

<h:outputScript>
    window.location = "#{requestScope['javax.servlet.error.request_uri']}";
</h:outputScript>

おまけとして、JSF ajax を使用しない場合とまったく同じように機能します。


これがユーザーエクスペリエンスをどのように改善するのか、私はただ疑問に思います. これは、エンドユーザーをさらに混乱させるだけです。ポストバック中にセッションが期限切れになったときに、追加のフィードバックなしで自分自身をリロードするページ。

于 2013-09-30T10:38:26.160 に答える