我正在使用 JSF2.0和jsp 。我试图在我的项目中加入会话失效。我尝试使用以下代码。
<h:commandButton value="Logout" action="#{bean.logout}" </h:commandButton>
我的bean类包含以下方法
public class Bean{
public String logout(){
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
session.invalidate();
return "login";
}
}
其中string login重定向到登录页面。
我的项目有几个页面,其中包含一个标题页..当我尝试以上方式... 当我从第一页点击退出时它工作正常...如果我尝试后相同转到其他页面,它没有退出。任何人都可以帮助我...这是我们在这里使会话无效的方式???
更新
我也尝试在导航规则中使用“*”,以便每个页面都可以重定向到Login ...但问题仍然相同
答案 0 :(得分:2)
尝试
return "login?faces-redirect=true"
作为结果,因此浏览器不会对登录页面使用相同的请求,该会话仍处于活动状态。
答案 1 :(得分:0)
你试过这个 -
return "/login?faces-redirect=true";
如果视图登录位于根目录中。
否则,如果它在某个其他文件夹中,则如下 -
//if it's in the folder - folder1
return "/folder1/login?faces-redirect=true"
在结果开始时注意/
。
答案 2 :(得分:0)
使用remoteCommand
代码并在注销时使用JavaScript调用此remoteCommand
并在managedBean
中提供注销的实现,并且您只需要{{1}粘贴就可以了重定向到登录页面,或者您可以再次使用JavaScript重定向到登录页面。
enter code here