1

私は最近 Seam を使用していますが、一時的な会話にはまだ混乱しています。

私たちのプロジェクトではExternalContext.redirect()、ユーザーを応答ページにリダイレクトするために使用しています。私が読んだところによると、Seam の会話は、応答のレンダリング フェーズが呼び出されると終了します。

しかし、別の場所で次のように読みました: Seam は JSF のポストバックとリダイレクトを介して会話コンテキスト (一時的な会話コンテキストを含む) を透過的に伝搬します

したがって、同じページにリダイレクトすると、commandLinks のアクション URL には常に同じ conversationId が追加されます。ページにあるように、一時的な会話を終了しようとしました <f:param name="conversationPropagation" value="none"/>が、リダイレクトされたページがレンダリングされると、会話コンテキストはすでに fred になり、使用している Bean は応答で使用できなくなります。

だから私が知りたいのは、リダイレクトで会話を終了し、応答のレンダリングまでコンテキストを維持する方法があるかどうかということですか?

そうでない場合、一時的な会話はいつ終了しますか? 会話のコンテキストはリダイレクトとポストバックを介して伝播されるため、終了することはありません。

4

1 に答える 1

0

CONVERSATIONスコープは、SEAMフレームワークスローUIによって自動的に維持されます。新しい会話を作成する場合は、次のように実行できます。

<h:commandButton id="conId" value="New Conversation" 
    action="#{conversationManager.clearConversation('/views/Hello.seam')}">  
</h:commandButton>

よくわかりませんが、会話を閉じたい場合は、このように試すことができます。

getConversation().end();

私はそれがうまくいくかどうかわかりません。

于 2011-10-07T14:12:22.493 に答える