2009-11-27 54 views
1

我一直在和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

如果你想創建一個新的對話,那麼我可以通過一個SEAM框架工作投擲UI來自動維護CONVERSATION範圍,然後你可以這樣做。

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

我不知道,但如果你想關閉對話,那麼你可以嘗試這樣的。

getConversation().end(); 

我不確定它會不會起作用。