我在 JSF 2.2 中面临过期会话的问题,我尝试了许多解决方案但徒劳无功。
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
和
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
request.getSession().invalidate();
我检查了具有“视图”和“会话”范围的 bean。我没有使用 JSF 范围注释,而是我们的应用程序架构限制我们使用像 @scope("session") 这样的 Spring 范围,并且我创建了视图范围 bean(根据:http ://comdynamics.net/blog/109/spring3-jsf2- view-scope/ ) 并注册到 Spring 作用域并像 @scope("view") 一样使用。它不会抛出任何异常,调用 bean 注销代码并导航到登录页面,但是在注销后,当我尝试访问主页或任何其他页面时,即使在不同的浏览器中它也会显示所有会话数据。
它在 JSF 1.2 上运行良好,我将 JSF 从 1.2 升级到 2.2,现在它不再工作了。
请在这方面帮助我。