在JSF中注销后尝试再次登录时出现ServletException

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JSF中注销后尝试再次登录时出现ServletException相关的知识,希望对你有一定的参考价值。

我正在努力解决我试图从导航栏执行注销的问题。每次我从Session注销并尝试再次登录时,在执行登录过程后,系统只会因ServletException错误而崩溃,反馈非常少。

当您第一次注销时,它会顺利执行,它只会将您重定向到索引,就是这样。再次登录并尝试再次执行注销后,会出现一个弹出窗口,例如,当您尝试刷新填充数据的表单时,会出现一个弹出窗口。

以下代码位于.xhtml代码段中,它是负责执行注销的navCommandLink

                <b:navCommandLink iconAwesome="power-off"
                    action="#{navbar.logout()}">
                    <span style="margin-left: 10px;">Logout</span>
                </b:navCommandLink>

行动的代码如下。

public String logout() {
    Map<String, Object> session = FacesContext.getCurrentInstance()
            .getExternalContext().getSessionMap();
    session.remove("LOGGEDIN_USER");

    FacesContext.getCurrentInstance().getExternalContext()
            .invalidateSession();
    return "index";
}

它应该返回到index.xhtml页面,就是这样。

答案

每个问题都应该有一个正确的答案,所以让我重复一下评论中给出的答案。问题是会话无效会阻止您触发JSF导航。所以你必须找到一个替代方案,例如通过javascript导航或使用externalContext.redirect(externalContext.getContextName() + "/index.xhtml");。另请阅读评论以获取更多信息。

以上是关于在JSF中注销后尝试再次登录时出现ServletException的主要内容,如果未能解决你的问题,请参考以下文章

春季注销时出现错误 404

当用户在 JSF 中注销后单击后退按钮时重定向到登录页面 [重复]

选择按钮后,再次弹出Ionic 3 Alert

尝试注销 django 时出现运行时错误

Spring Security:注销时出现 404

发送登录信息时出现网络错误