1

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

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

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

依次转发到index.xhtmlfaces-config.xml. 但是,当我单击注销并到达index.xhtml页面时,页面被扭曲,没有任何 css 或任何设计。

我哪里错了?

4

1 回答 1

1

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

假设您使用的是老式 JSF 导航案例,只需添加

<redirect />

给导航箱应该做的。

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

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

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

于 2013-05-10T16:45:59.780 回答