2014-12-03 27 views
0

如果用戶在具有相同會話的瀏覽器上打開多個選項卡,我在這裏有一些問題。多個選項卡上的同一會話

  1. 用戶打開的選項卡1,導航交易1001點的細節
  2. 右鍵點擊並打開同一瀏覽器的另一個選項卡中,導航交易1002點的細節
  3. 回到標籤1,並修改交易1001點的細節。相反,交易1001細節被交易1002細節覆蓋。

我正在使用WebSphere 8.0。該頁面是請求範圍的。

任何建議什麼是一個好的和容易維護的解決方案,以防止這種情況?

回答

4

您正在將會話/ cookie中的事務細節保存起來,這是一個糟糕的主意,應將ID等作爲隱藏字段傳遞給表單。

+0

我同意,你應該使用ID(主鍵)來確定提交表單時應更新的對象。 – 2014-12-03 09:46:56

+0

@Ankit Gupta我該如何做到這一點? – bittersour 2014-12-03 09:48:45

+0

你使用任何框架,jsf等?如果您手動創建表單,則可以添加隱藏類型的輸入字段並將該ID作爲值傳遞。 – 2014-12-03 09:53:28

0

對於Ankit的投票,當您打開一個新標籤頁時,請確保您有一個特定於標籤的ID作爲隱藏的輸入字段,例如產品ID。

從這裏開始,你可以採用兩條路徑,無狀態方法,根本不使用會話,從數據庫中加載所有內容,更新,保存。無狀態是一種幸福,如果你能支持它的完美。 第二種方法假定您使用特定於選項卡的ID從會話中檢索正確的日期,換句話說,特定於選項卡的ID將成爲會話密鑰的一部分。

後面的方法意味着你已經啓用了一個對話範圍,既然你提到你正在使用JSF,那麼對於對話提供支持,請查看文檔@ConversationScoped。重點線是

Any JSF request has exactly one associated conversation. 

具體例子取決於你使用的,應在網上找到很多例子實施,我的想法只是讓你知道它的支持

相關問題