我有几个页面具有相同的主模板,其中包含带有注销按钮的标题。当我尝试从所有页面注销时,它正常工作,除了一个 - 在其URL中有请求参数的那个。
注销(会话失效)后,我将重定向回登录页面,如下所示:
return "/login.xhtml?faces-redirect=true";
当我按这样的网址注销时,
http://localhost:8080/WPA_MOVIEDATABASE/app/index.xhtml
然后重定向工作正常,我最终进入:
http://localhost:8080/WPA_MOVIEDATABASE/login.xhtml
但是,当我按照这样的请求参数按下logout时,
http://localhost:8080/WPA_MOVIEDATABASE/app/movie.xhtml?id=135
然后我被重定向回没有查询字符串的相同URL:
http://localhost:8080/WPA_MOVIEDATABASE/app/movie.xhtml
我是否正在重定向错误,或者这是否是这类网址的常规内容?
答案 0 :(得分:0)
在HTTP Server Monitor中,我发现在按下注销按钮后,首先有POST request
到
http://localhost:8080/WPA_MOVIEDATABASE/app/movie.xhtml
然后会跟随GET request
到
http://localhost:8080/WPA_MOVIEDATABASE/login.xhtml
。
那一刻我知道问题出在退出按钮 ..
我正在使用:
<h:form>
<h:commandLink value="Log out" action="#{userBB.logout}"/>
</h:form>
将代码更改为以下内容解决了问题:
<h:button value="LOG OUT" outcome="#{userBB.logout()}" />
百万感谢BalusC,他的提示让我发现了真正的问题!