2010-06-28 100 views
2

我在Seam中處理會話和會話的方式有問題。我們有一些相當長的表單,其中大部分時間你開始填寫第一個屏幕,然後一些動作在後臺執行,用戶離開計算機做一些工作,然後他們回來並註釋工作。在Seam中保持會話和對話

問題是,大部分時間會話超時或對話超時。雖然可以通過拆分工作流程輕鬆修復第二個,但第一個更重要,因爲用戶必須重新登錄,導航到右側屏幕,然後纔可以輸入註釋。

是否有一個簡單的方法來創建一個會觸發後臺刷新會話的Ajax代碼片段。這將使我們能夠保持會議無限期地活着。

也有一個簡單的方法來保持對話活着嗎?

回答

4

您使用的是RichFaces嗎?我們使用類似的東西來保持會話的活躍。

<a4j:poll interval="10000" reRender="form1" action="#{logger.userIsAlive}" /> 

「action」屬性是可選的,我們用它來記錄連接的用戶。我們不會使用對話,但我會說這也會讓對話保持活躍。

如果您不使用RichFaces,那麼您可以使用AJAX框架(如JQuery)通過調用Servlet來ping服務器。

+0

我有一些問題,因爲我不得不把它包裝在(我的壞,沒有閱讀文件不夠好)。但現在它像一個魅力。 唯一我沒有想到的問題是,當 ping服務器和用戶點擊一個鏈接,它會拋出一個併發呼叫對話錯誤,這是令人難以置信的醜陋,任何機會來避免,而不禁用所有的鏈接? – cdecker 2010-07-05 14:10:42

+1

最簡單的方法是將「eventsQueue」屬性添加到a4j標籤。還有一個可配置的全局隊列,請查看RichFaces文檔。 http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/ArchitectureOverview.html#QueueandTrafficFloodProtection – germanescobar 2010-07-08 20:18:59

+0

我用一個簡單的Servlet修復了它,它打開並立即關閉對話。但我想你的解決方案也很好,所以你得到這個:D – cdecker 2011-01-17 22:09:59