目前,我正在为在线购物车创建一个Web应用程序,我需要在每个jsf页面上维护会话。
我的问题是:
如何在托管bean中创建和销毁会话
如何访问存储在会话变量中的值?像这样?
FacesContext.getCurrentInstance().getExternalContext().getSessionMap.put("key",object);
如何在jsf
我还需要使用session.invalidate()
销毁会话,但我失败了!!
答案 0 :(得分:4)
如何在托管bean中创建和销毁会话
您无需自行创建。 servletcontainer将根据需要自动为您执行此操作。换句话说,每当您(或JSF)需要在会话范围中设置对象时,servletcontainer将自动创建会话。在JSF Web应用程序中,这将在您
时发生@SessionScoped
或@ViewScoped
托管bean。ExternalContext#getSession()
获取会话,第一次通过true
。ExternalContext#getSessionMap()
将对象存储在会话地图中。<h:form>
返回页面,同时将状态保存方法设置为“server”。您可以ExternalContext#invalidateSession()
销毁会话。 E.g。
public String logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return "login?faces-redirect=true";
}
请记住之后发送重定向,因为会话对象在当前请求的响应中仍然可用,但在下一个请求中不再可用。
如何访问存储在会话变量中的值?
只需将其设为@SessionScoped
托管bean的属性即可。或者,您也可以手动操作ExternalContext#getSessionMap()
,是。
如何在jsf
中销毁会话
第一个问题已经回答了这个问题。