我最近和Seam一起工作,临时谈话仍然让我感到困惑。
在我们的项目中,我们使用ExternalContext.redirect()
将用户重定向到响应页面。根据我的阅读,Seam会话在调用渲染响应阶段时结束。
但后来我在其他地方读到了: Seam transparently propagates the conversation context (including the temporary conversation context) across JSF postbacks and redirects 。
因此,当我重定向到同一页面时会发生的事情是commandLinks始终将相同的conversationId附加到其动作URL。正如页面所说,我试图用<f:param name="conversationPropagation" value="none"/>
结束临时对话,但这会导致在重定向页面呈现时,对话上下文已经过了,我们在哪里使用的bean不能再用了在回复中使用。
所以我想知道的是,如果有办法用重定向结束对话并保留上下文直到呈现响应?
如果没有,临时谈话什么时候真的结束?因为会话上下文是通过重定向和回发传播的,所以它对我来说它永远不会结束。
答案 0 :(得分:0)
我的事情CONVERSATION范围由SEAM Frame work throw UI自动维护,如果你想创建一个新的对话,那么你可以这样做。
<h:commandButton id="conId" value="New Conversation"
action="#{conversationManager.clearConversation('/views/Hello.seam')}">
</h:commandButton>
我不确定但是如果你想关闭一个CONVERSATION那么你可以尝试这样。
getConversation().end();
我不确定它是否会起作用。