2011-06-26 158 views

回答

2

只要不將請求或會話範圍數據存儲在位於應用程序範圍內的託管bean中。也就是說,不要聲明一個請求或會話作用域bean的屬性,它應該與bean本身一樣長,如static

它與基本的Servlet API沒有區別。

+0

@BalusC:在我們的應用程序中,我們沒有將任何請求或會話範圍數據存儲在託管bean中,該託管bean位於應用程序範圍中。如果兩個客戶端正在使用應用程序,它們正在訪問相同的會話屬性。這可以通過使用自定義的作用域bean來解決嗎? – user679526

+0

如果兩個物理上不同的客戶端可以訪問同一個會話變量,那麼它可能被存儲爲會話bean的'static'屬性。或者只是你誤解了「會話」概念,並錯誤地認爲**相同**瀏覽器實例的兩個不同窗口或選項卡表示不同的會話。如果您想測試多個客戶端,那麼您必須使用**物理上不同的**機器或網頁瀏覽器(例如Firefox和Chrome)進行測試。 – BalusC

+0

@BalusC:如果用戶在同一臺​​瀏覽器上打開兩個不同的客戶端網站(使用相同的應用程序)http:// app:7001/bank A和http:// app:7001/bank B,則兩個客戶端都有同一會話ID。如果在同一個瀏覽器中打開,他們如何擁有不同的會話ID? – user679526

1

JSF 2.0幫助您提供一種創建用戶界面的方法,併爲請求,會話或應用程序的句柄範圍提供了一些內置的註釋。在簡單的場景中,使用請求,視圖,Flash和會話範圍可以爲你工作。但是,如果您需要更詳細的內容,請查看MyFaces Orchestra,它提供了衆所周知的對話範圍(需要彈簧),或者更好地看看MyFaces CODI,它提供了諸如bean驗證,腳本,窗口範圍等等的東西!使用CODI對於新的JSF Web應用程序來說是最好的選擇,因爲遵循CDI-JSR 299標準,併爲您提供一些有用的好處。

以CODI開頭的最佳方法是看MyFaces CODI Wiki,您也可以在MyFaces Users and Dev Mailing lists上提問。