java - 相位监听器和命令按钮

标签 java jsf jsf-2 xhtml phaselistener

方法

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/

相关文章:

jsf - Primefaces <p :outputPanel/> or <div/>. 我应该使用什么来响应?

ajax - 我无法以另一种形式更新数据表

java - JSF 2 viewScope bean 瞬时注入(inject) Spring 服务 bean

java - 返回给定日期的 BST/GMT

java - 如果我要求用户输入一个文件,而该文件不存在,如何在程序不停止的情况下继续询问文件名?

JSF如何在转发到其他页面之前显示导航确认弹出窗口

web-services - 如何使用 JAX-RS Web 服务打开 JSF 页面?

java - 字符串操作时出现 IndexOutOfBound 错误

Java 2D 导航网格生成

JSF:为什么在请求范围内的 POST REDIRECT GET 下提交表单期间,在应用请求值阶段调用渲染中的空测试