2012-02-02 66 views
1

我有一個員工會話bean,它具有相同類的相關員工bean的列表。我的用戶需要能夠查看「主要」員工,並從該員工那裏產生多個瀏覽器窗口以顯示相關員工的信息,但保持「主」或「根」員工視圖處於活動狀態,以便他們可以繼續從該處開始工作。啓動多個新窗口,但保持當前視圖有效

我相信目前正在發生的事情是JSF會打開一個新窗口並呈現相關員工,但隨後丟失原始窗口/視圖的軌跡,因此如果您單擊命令鏈接或從原始窗口運行任何內容(在您之後已經使用命令鏈接中的目標屬性產生了新窗口)第二個動作將不會運行或調用會話bean中的任何方法,除了重新加載頁面之外,它似乎沒有任何操作。我相信因爲你試圖從一箇舊的JSF視圖運行一個動作,而這個視圖不再被註冊,所以當框架從這個過時的視圖中收到一個請求時,它必須註冊?也許?

本質上,我試圖爲同一個用戶激活同一會話bean類型的多個顯示,並將每個會話bean視圖附加到單獨的瀏覽器窗口。

如果您有任何想法,請讓我知道。或者如果有更好的方法來做到這一點。

+0

請更具體描述具體問題。從開發人員的角度進行闡述,而不是以最終用戶的視角進行闡述。例如,當你說*「如果你嘗試從原始窗口運行一個命令,它會忽略它」*會發生什麼。 – BalusC 2012-02-02 21:25:02

+0

對不起,謝謝你的建設性批評。我將編輯並添加更多信息。 – Eric 2012-02-02 22:19:55

+0

我認爲你用幾句話要尋找的是如何讓用戶在其他工作而不是ViewExpiredException時保持一個視圖活着。 Mojarra(邏輯視圖的數量)和MyFaces(MYFACES-3117見org.apache.myfaces.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION web配置參數)對這個問題有一些解決方法,但是最終的解決方案可能在JSF 2.2上。 – lu4242 2012-02-03 23:00:53

回答

1

對不起,對於遲到的答案。

我通過使用命令鏈接(並在新窗口中打開它)調用請求bean方法來解決此問題。這使我可以打開多個broswer窗口(每個對請求bean的新調用),而不影響會話bean「main」僱員bean。用戶可以在多個窗口中同時查看多個員工。我的部分問題與JSF的誤解有關。我一次只能在會話中有一個「員工」會話bean,所以當我試圖用不同的員工產生多個browswer窗口時,他們都引用同一個會話僱員bean,這將不起作用。 JSF將附加到已打開的新窗口,不再意識到原始的打開窗口。

無論如何做這樣的事情我會建議每次打開新窗口查看新員工時,實例化請求新的bean。

對不起,由於政策,我不能發佈任何代碼

+0

是的,對於在不同窗口中可能不同的數據,使用'@ SessionScoped' bean是一個典型的錯誤。我也犯了這個錯誤: - /。請注意,請求範圍的bean不是唯一的選擇;通常視圖範圍更有意義(甚至是自定義範圍)。 – sleske 2014-01-23 09:37:43

相關問題