2012-02-22 140 views
0


我想知道如何在JSF2.0中设置和取消设置会话。尽管遵循一些博客和书籍(Core JavaServer Faces-3rd Edition),但我知道使用注释@SessionScoped我们可以设置任何管理bean在会话中。我有一个loginBean,它是@ManagedBean和SessionScoped声明的。在右上角,我的网络有登录按钮。 当这个会话被创建(我没有手动设置它,这就是为什么我很困惑),当我被摧毁?它必须通过超时或仅通过单击注销按钮来销毁。如何在JSF2.0中设置和取消设置

回答

1

JSF使用下面的Servlet API。会话范围的托管bean基本上被设置为HttpSession的属性。每当引用托管bean的EL表达式第一次被评估时,它将被创建和设置。只要会话过期(通过重新启动客户端或服务器中的超时),它就会从会话中“移除”或者失效。如果你让注销按钮调用ExternalContext#invalidateSession(),那么会话将失效。

如果您熟悉基本的Servlet API,那么您应该已经理解这一切如何工作。有关JSF封面中Servlet的HttpSession作品的深入解释,请阅读此答案:How do servlets work? Instantiation, sessions, shared variables and multithreading

+0

okkkk ....这很有趣... 是无效的会议和取消设置会话引用同样的事情? – 2012-02-23 09:38:10

+0

我这么认为。在技​​术上,至少“取消设置会话”这个短语是没有任何意义的。很可能你的意思是相同的,但你使用了错误的术语。 – BalusC 2012-02-23 13:08:39

0

在JSF 2.0我们可以设置总类的ob为会话等我提到

CLASS_NAME SM;

ExternalContext extContext = FacesContext.getCurrentInstance()。getExternalContext(); extContext.getSessionMap()。put(“给名称访问这个属性”,sm);

Class_name sm =(Class_name)extContext.getSessionMap()。get(“为访问此属性指定名称”);