Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
session.invalidate()不';t实际清除JSF会话范围的值_Session_Jsf - Fatal编程技术网

session.invalidate()不';t实际清除JSF会话范围的值

session.invalidate()不';t实际清除JSF会话范围的值,session,jsf,Session,Jsf,我看到了这个问题中提到的类似问题- 我有一个会话范围的LoginBean,其中有一个操作注销为# 它几乎可以正常工作 输出# {xyzBean=com.xyz.bean。XYZBean@46f046f0,…} 使会话无效 {} sessionMap为空表示没有会话作用域bean。然而,在注销操作之后,它会重定向到另一个相同的页面。登录是同一页面上的一层。我看到片段JSP仍然显示旧数据 我没有删除facade.removeCookie中的JSESSIONID。它会删除与用户相关的一些其他cooki

我看到了这个问题中提到的类似问题-

我有一个会话范围的LoginBean,其中有一个操作注销为#

它几乎可以正常工作

输出#

{xyzBean=com.xyz.bean。XYZBean@46f046f0,…}

使会话无效

{}

sessionMap为空表示没有会话作用域bean。然而,在注销操作之后,它会重定向到另一个相同的页面。登录是同一页面上的一层。我看到片段JSP仍然显示旧数据

我没有删除facade.removeCookie中的JSESSIONID。它会删除与用户相关的一些其他cookie

任何帮助都将不胜感激


谢谢。

您可能正在查看从浏览器缓存提供的页面。您需要添加HTTP响应头,以指示webbrowser不缓存动态页面。您可以使用映射到感兴趣的
上的
javax.servlet.Filter
来执行此操作,例如
*.jsf
或其他什么,并在
doFilter()
方法中执行以下工作:

HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Cache-Control", "no-cache,no-store,must-revalidate"); // HTTP 1.1
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0
httpResponse.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(request, response);
不要忘记在测试之前清除浏览器缓存;)



与问题无关,代码中的
if(session!=null)
nullcheck是多余的,因为会话在到达该nullcheck时永远不能为null。如果它为null,它会在
removeAttribute()
调用中抛出
NullPointerException
,因此永远不会到达nullcheck。

谢谢,这就成功了。此外,我还必须执行ec.redirect来代替导航。感谢我的检查点——如果我陷入困境,我有时会忽略这些事情P
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Cache-Control", "no-cache,no-store,must-revalidate"); // HTTP 1.1
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0
httpResponse.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(request, response);