我正在努力解决我尝试从导航栏执行注销的问题。每次我从会话中注销并尝试再次登录时,在执行登录过程后,系统只会因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";
}
页面,就是这样。
答案 0 :(得分:0)
每个问题都应该有正确的答案,所以让我重复一下评论中给出的答案。问题是会话无效会阻止您触发JSF导航。因此,您必须找到替代方案,例如通过JavaScript导航或使用externalContext.redirect(externalContext.getContextName() + "/index.xhtml");
。另请阅读评论以获取更多信息。