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

时间:2017-11-28 22:48:46

标签: jsf bootsfaces

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

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

以下代码位于.xhtml代码段中,负责执行注销的是dispatchEvent(new Event('change'))

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"; } 页面,就是这样。

1 个答案:

答案 0 :(得分:0)

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