2011-06-21 10 views
5

CDIを使用した当初は、faces-redirect = trueを使用して、長時間実行中の 会話がアクティブなページに移動しています。したがって、..myPage.xhtml?cid = 1のようなURLがあります。CDI/Weld - 会話を終了した後にブラウザページの更新を処理する方法は?

ある時点で、私は会話を終了します。これは を行うには合理的なものでなければならないことを意味しますか、セッションスコープを使用することもできますか?とにかく、私は会話を終了し、 ユーザーがF5を押すと、もちろん、これはcid = 1として '会話が見つかりません'というエラーを引き起こします。 は存在しません。

誰もこの問題を回避する方法を提案できますか?私はSteven Verborgh ViewScoped実装を使用しています。単純に対話スコープBeanを使用して、ページ間にパラメータ を渡します。だから私は例2の@ViewScoped Beanを持っています。それぞれは後ろのページ1になります @ Viewversoped Beanに@ConversationScoped ParameterBeanを挿入します。 ページ1から呼び出されたアクションメソッドで、 会話(parameterBean.getConversation()。begin())を開始します.2ページのpreRenderViewイベントでは、 というプロパティの参照をページ2のバッキングビーンインスタンス変数を使用して会話を終了すると、 は完了しており、もはや必要ありません。

F5の問題を除いて、問題なく動作します。もし誰かが私にそれを感謝したい提案があれば、 うまくいけば私は本当に明白な何かを逃していない。私はリダイレクトから を取得していないと想定しています。

ありがとうございました。

答えて

4

回避策はありません。デフォルトの@ConversationScopedは完全に壊れています。代わりにMyFaces CODIから@ConversationScopedを使用しています。標準的なスコープで得られるすべての問題を解決します。

関連する問題