我有一个index.xhtml
文件,这是我的应用程序的登录页面。
我有一个注销按钮,它调用以下方法:
public String logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return "logout";
}
从index.xhtml
开始转发到faces-config.xml
页面。但是,当我点击退出并到达index.xhtml
页面时,页面会失真,没有任何CSS或任何设计。
我哪里出错?
答案 0 :(得分:1)
规范方法是在会话无效后发送重定向,否则旧会话变量仍然存在于当前请求的响应中。
如果您使用的是旧式JSF导航案例,只需添加
即可<redirect />
导航案例应该这样做。
但是,你得到ExternalContext#invalidateSession()
进行编译意味着你正在使用JSF 2.x.在这种情况下,您也可以使用其隐式导航工具,而无需导航案例样板:
return "/index.xhtml?faces-redirect=true";
如果仍然无法解决您的问题,那么这很可能是由本地的servlet过滤器引起的,该过滤器在没有找到登录用户的情况下过分地阻止CSS(以及JS和图像)资源。但是这个问题与注销功能没有关系,当你没有登录时,你已经遇到了同样的问题。