Primefaces 3.4.1、Jboss AS 7.1、および MyFaces CODI を使用してアプリケーションを作成しています。私が得た問題は、CODI が提供する会話スコープを使用していて、会話が終了したらブラウザーの [戻る] ボタンを処理する方法が必要なことです。
より正確には、会話が終了し、ユーザーが別のページにいるとき (ウィザードが終了してデータベースにコミットするようなものだと考えてください)、戻るボタンが押された場合、次の例外を受け取ります。
javax.ejb.EJBTransactionRolledbackException
理想的には、会話が終了したので、これを別のページ (メニュー、ダッシュボード) にリダイレクトしたいと考えています。
これは JSF 2.0 ナビゲーション ルールで実行できますか?
編集:
次のようなナビゲーション ルールを作成しました。
<navigation-rule>
<from-view-id>/page1.xhtml</from-view-id>
<navigation-case>
<from-outcome>outcome1</from-outcome>
<to-view-id>/page2.xhtml</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>*</from-outcome>
<to-view-id>/dashboard.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
戻るボタンを押すと、dashboard.xhtml にリダイレクトされることを期待しています。押すと、バックエンドで別のアクションが発生すると想定しました。明らかに私は間違っていると思いました。これらのケースを使用して bakc ボタンによって送信されたものをキャッチする方法はありますか? もしかしてタグ付き?
更新 1:
どうやらブラウザの戻るボタンは JSF ナビゲーション ケースをトリガーしません。それが何を引き起こすかは明らかですか?次のフィルターを実装しました: https://stackoverflow.com/a/10305799/1611957今何がトリガーされますか? それはそれを捕まえる仕事をより簡単にしますか?