我正在使用JSF和primefaces开发一个基于登录的应用程序。在这个应用程序中,我将已登录用户的信息保存在session scoped managedbean中,当他注销时,我需要清除该信息。那么,如何清除SessionScoped ManagedBean对象中的这些详细信息呢?
我正在使用JSF和primefaces开发一个基于登录的应用程序。在这个应用程序中,我将已登录用户的信息保存在session scoped managedbean中,当他注销时,我需要清除该信息。那么,如何清除SessionScoped ManagedBean对象中的这些详细信息呢?
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
FacesContext.getCurrentInstance().getExternalContext().redirect("/login.xhtml");
或者,从您的方法中简单返回导航案例结果:
return "login.xhtml?faces-redirect=true";
如果您不想使会话失效并保留会话范围的Bean(在我看来这是一种不好的做法),只需在注销方法中将所有用户数据(希望这些数据都收集在一个会话范围的托管Bean中)清空即可。如果注销方法位于另一个会话范围的Bean中,则可能需要注入该Bean。
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
System_Properties system_Properties=new System_Properties();
PrintWriter out = response.getWriter();
try {
request.getSession().invalidate();
}finally {
out.close();
}
}
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("managed_bean_name", null);
其中,“managed_bean_name”是您托管bean的名称。
希望能对您有所帮助。
当用户注销时,会话将被销毁,所有的SessionScoped ManagedBean对象也将被销毁