会话在JSF2.0中无效

时间:2011-10-02 12:19:32

标签: java javascript java-ee jsf-2

我正在使用 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 ...但问题仍然相同

3 个答案:

答案 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