2009-07-16 65 views
0

我對JSF支持bean作用域存在一些誤解。我是JSF的新手,現在正在編寫一個簡單的項目,我的所有bean大多都有會話範圍。但是,如果我的網站會有很多用戶,這意味着我的會話會非常大,並且會終止我的服務器。有些人告訴我,解決方案是使用請求範圍bean。但是,例如,當我的頁面必須經過驗證並且驗證失敗時顯示錯誤消息並保存所有用戶輸入,那麼在這種情況下我該怎麼辦?我嘗試使用使用AJAX請求的組件,並希望我的請求bean不會重建,但這不起作用(我正在使用<rich:datascroller>)。後臺bean作用域如何工作?

我想我的JSF理解有很大的漏洞,如果有人解釋我必須在這種情況下做什麼,或者將我關於bean範圍的一些好文章鏈接起來,我將不勝感激。

+0

這裏JSF2的針對性延遲:http://stackoverflow.com/questions/7031885/how-to-choose-the-right-bean-scope – BalusC 2014-02-05 08:20:52

回答

3

範圍定義了bean的生命週期。

在服務一個HTTP請求的過程中請求作用域bean處於活動狀態,因此在您分析用戶輸入並制定響應頁時,它們都可用。因此,對於簡單的驗證和響應,我希望請求範圍的bean成爲您需要的東西 - 例外情況是,如果您發送重定向回瀏覽器並提交新請求,那麼您可能需要...

會話範圍的bean活在用戶會話的生命週期中,即。跨幾個請求。會話可能會持續一段時間,但最終用戶退出,或者變得不穩定,會話超時。所以,你有多少用戶並不重要,有多少人同時活躍。爲每個用戶保留一些會話數據是非常常見的(至少像是誰,也許是他最近瀏覽過的東西),所以沒有根本理由擔心某些數據被保留。你只需要確保你保持整潔,不要讓舊頁面的數據保持很長 - 也許只是一個「當前數據」bean或者其他類似的東西。

+0

但是,與AJAX請求,我認爲它不會導致新的bean建設,但確實如此。我怎樣才能執行這個「簡單驗證和響應」? – aindl 2009-07-17 13:12:14