我對錶達式語言2的bean-view通信語法感到困惑。首先,有可能再有一個託管bean具有相同名稱但scobes不同。如果訪問它們另一方面通過表達語言 ; 考慮到會話中有一個名爲DemoBean的屬性,並且還有一個會話Scobed託管bean,名爲DemoBean, 如果我嘗試像這樣通過EL訪問此bean #{DemoBean} //引用bean或屬性? 他們說#{} sessionScobe是訪問會話屬性,但
只是#{} sessionattributename是有效的方法是什麼?當我將對象放置到會話映射中時,它是否被複制或複製?EL會話屬性和託管bean訪問
0
A
回答
1
JSF的目標是爲您管理會話屬性本身。這意味着您應該忘記手動保持/恢復會話映射屬性,因爲您可以使用JSF的機制來完成此操作。
當您想要保留整個應用程序的一些信息時,請在託管bean中使用@ApplicationScoped
註釋。您可以使用@SessionScoped
,@RequestScoped
和@ViewScoped
註釋對會話,請求或具體視圖執行相同操作。
所以,如果你要存儲在會話中的某些屬性:使用
@ManagedBean
@SessionScoped
public class SessionScopedBean{
public String sessionAttribute;
//Getter and setter
}
您可以recover/change the value of the attribute of the bean的FacesContext
:
FacesContext context = FacesContext.getCurrentInstance();
SessionScopedBean bean = (SessionScopedBean) context.getApplication()
.evaluateExpressionGet(context, "#{sessionScopedBean}", SessionScopedBean.class);
bean.setSessionAttribute("value");
記住JSF豆默認命名爲bean的名字與第一性格較低。如果你沒有初始化你自己,請記住這個bean在第一次打擊時將會是null。您可以通過簡單的方式using a PreRenderViewEvent
in the bean you want to initialize並在您的登錄頁面中執行它。這可確保該bean在該會話的其餘部分保持活力。
最後,就是你會從您的視圖訪問會話屬性的方式:「當我把一個對象的會話映射是referanced或複製」
#{sessionScopedBean.sessionAttribute}
相關問題
- 1. 修改從另一個託管bean作爲託管屬性訪問的託管bean的私有對象屬性
- 2. 注入FacesContext作爲會話範圍的託管bean的託管屬性
- 3. 屬性以JSF託管bean
- 4. EL會話對象屬性
- 5. 無法訪問另一個受管bean的託管bean的屬性
- 6. 是否無法訪問非託管bean類中的託管屬性?
- 7. JSF託管Bean屬性目標無法訪問
- 8. 如何從bean的方法訪問Spring託管屬性?
- 9. JSP-EL會話變量訪問錯誤:javax.el.PropertyNotFoundException儘管所述屬性被公開
- 10. 在JSF託管bean的構造函數中訪問會話bean數據
- 11. LazyInitializationException與CDI託管Bean和有狀態會話Bean
- 12. 在EL中訪問無狀態會話bean的簡單方法?
- 13. 同步會話scopped託管bean
- 14. PrimeFaces 3.4 RC1,對話框無法識別託管Bean屬性
- 15. 如何從Servlets訪問@ViewScoped託管bean?
- 16. 從Servlet訪問JSF ViewScoped託管bean
- 17. 防止會話屬性由EL
- 18. 託管和會話bean的模擬和集成測試
- 19. 無法創建託管bean,託管bean的屬性MB不存在
- 20. 性能問題JSF - 託管Bean內部管理Bean注入
- 21. 會話範圍的託管bean vs有狀態的bean vs httpsession
- 22. 會話範圍的託管bean和ActionListener的
- 23. 爪哇EL:訪問嵌套屬性
- 24. JSP EL可以直接訪問屬性
- 25. EL in <sec:authorize>訪問屬性
- 26. 春季MVC會話屬性訪問
- 27. 無法訪問會話屬性
- 28. 訪問JAVA類中的會話屬性
- 29. JSF託管bean問題
- 30. JSF EL有兩個bean的屬性
感謝意見,但 – daemonThread 2013-04-07 17:17:16
當java引用它的對象時,它將被引用。所以如果你改變對象的值,它也會變成地圖(最後,會話屬性也存儲在地圖中)。不過,正如我所說的,使用JSF時要擺脫它。 – 2013-04-07 20:32:22
當新會話scobed託管bean創建它是否隱式添加到會話映射?所以通過req.getSession()。getAttribute(「credentials」)來訪問它。是真的?我問這是因爲我有登錄過濾器和會話scobed managedbean調用credentials.In過濾器依賴注入是不允許的,並且FacesContext#getExternalContext()。getSessionMap()。get(「credentials」);返回null我們不能訪問過濾器中的面孔上下文,所以只有方法接縫會話屬性我猜。 – daemonThread 2013-04-07 21:54:05