从任何页面注销到索引页面

时间:2013-05-10 16:39:02

标签: jsf logout

我有一个index.xhtml文件,这是我的应用程序的登录页面。

我有一个注销按钮,它调用以下方法:

public String logout() {
    FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
    return "logout";
}

index.xhtml开始转发到faces-config.xml页面。但是,当我点击退出并到达index.xhtml页面时,页面会失真,没有任何CSS或任何设计。

我哪里出错?

1 个答案:

答案 0 :(得分:1)

规范方法是在会话无效后发送重定向,否则旧会话变量仍然存在于当前请求的响应中。

如果您使用的是旧式JSF导航案例,只需添加

即可
<redirect />

导航案例应该这样做。

但是,你得到ExternalContext#invalidateSession()进行编译意味着你正在使用JSF 2.x.在这种情况下,您也可以使用其隐式导航工具,而无需导航案例样板:

return "/index.xhtml?faces-redirect=true";

如果仍然无法解决您的问题,那么这很可能是由本地的servlet过滤器引起的,该过滤器在没有找到登录用户的情况下过分地阻止CSS(以及JS和图像)资源。但是这个问题与注销功能没有关系,当你没有登录时,你已经遇到了同样的问题。