我最近一直在使用 Seam,临时对话仍然让我感到困惑。
在我们的项目中,我们使用ExternalContext.redirect()
将用户重定向到响应页面。根据我的阅读,Seam 对话在调用渲染响应阶段时结束。
但后来我在其他地方读到:Seam 在 JSF 回发和重定向之间透明地传播对话上下文(包括临时对话上下文)。
因此,当我重定向到同一页面时会发生什么,commandLinks 始终将相同的 conversationId 附加到其操作 url。正如页面所说,我试图用 结束临时对话 <f:param name="conversationPropagation" value="none"/>
,但这会导致在呈现重定向页面时,对话上下文已经是 fred 并且我们使用的 bean 不能再在响应中使用。
所以我想知道的是,是否有办法通过重定向结束对话并保持上下文直到呈现响应?
如果没有,临时对话何时真正结束?因为由于对话上下文是通过重定向和回发传播的,所以对我来说它永远不会结束。