簡體   English   中英

具有多個范圍的托管Bean

[英]Managed Bean with more than one scope

我有一個簡單的問題要問各位專家

同一bean是否可以同時具有會話范圍和請求范圍?

例如,我有一個bean myBean ,它既可以是Session-Scoped myBean ,也可以是Request-Scoped嗎?

編輯

經過一番嘗試后,我決定銷毀范圍內的第一個會話。

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("SessionBean1");

有沒有一種方法可以將其重新初始化為范圍限定的請求?

通過faces-config.xml文件中定義一個bean,可以在兩個不同的范圍內定義一個相同類型的bean。 通過#{sessionScope.myBean}#{requestScope.myBean}等表達式引用時,這將導致兩個不同的實例。

可以使用FacesContext編程方式將同一bean實例放置到多個作用域中。

但是,此類bean的存在表明存在設計缺陷。

您可以對一個以上范圍的托管bean進行注釋。 該代碼將編譯和部署而不會出現錯誤(已在Mojarra 2.1.3 / Glassfish 3.1.1中進行了測試)。

但是,結果是始終將應用最狹窄的范圍。 因此,如果用@SessionScoped@RequestScoped注釋bean,則該bean將位於請求范圍內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM