如何清除会话作用域托管bean的对象?

Aru*_*run 11 primefaces jsf-2

我正在使用primefaces在JSF中开发基于登录的应用程序.在那里我将记录的用户信息保存在会话作用域的managedbean中,我需要在他退出时清除这些细节,那么如何清除SessionScoped ManagedBean对象中的那些细节呢?

sku*_*sel 18

您需要通过在操作方法中调用以下函数来使当前会话无效:

FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
Run Code Online (Sandbox Code Playgroud)

此外,由于会话范围bean在后续请求中被删除,请务必发送重定向:

FacesContext.getCurrentInstance().getExternalContext().redirect("/login.xhtml");
Run Code Online (Sandbox Code Playgroud)

或者,只需从您的方法返回导航案例结果:

return "login.xhtml?faces-redirect=true";
Run Code Online (Sandbox Code Playgroud)

如果您不想使会话无效,并且有效地保留会话范围的bean(在我看来这是一个不好的做法),只需取消所有用户数据(希望在一个会话范围内的托管bean中收集)在logout方法中(如果logout方法驻留在另一个会话范围的bean中,您可能需要注入该bean).