方法
public void beforePhase(PhaseEvent event)
public void afterPhase(PhaseEvent event)
在与
关联的方法之后被调用<p:commandButton value="Login" action="#{checkUser.login}" ajax="false" />
由于我正在尝试实现注销功能,因此现在必须按两次按钮才能离开页面。
有没有办法让“命令按钮”方法在上面提到的“阶段监听器”方法之前被调用?
最佳答案
您需要在登录和注销后发送重定向,以便让客户端触发新的 HTTP 请求。
例如
public String login() {
// ...
return "home?faces-redirect=true";
}
public String logout() {
// ...
return "login?faces-redirect=true";
}
顺便说一句,PhaseListener
不是执行基于请求的身份验证的正确工具。您应该更喜欢使用 servlet Filter
来完成这项工作。 PhaseListener
的主要缺点是它仅在 JSF 请求上运行,并且每个请求最多调用 12 次。有关此类过滤器的启动示例,另请参阅 How to provide bean methods without EL expression
关于java - 相位监听器和命令按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13735347/