应该在页面刷新时调用JSF生命周期的哪些阶段

时间:2010-08-26 10:35:39

标签: jsf

在页面刷新时应该调用JSF生命周期的所有阶段

1 个答案:

答案 0 :(得分:1)

这完全取决于请求的类型(POST或GET)和可用参数。例如,普通的香草GET请求只会触发第一个和最后一个阶段。默认情况下,“双提交”(刷新表单提交)将贯穿所有阶段,但根​​据immediate="true"和/或UIInput组件中UICommand的存在,某些阶段可能会被跳过。

您可以创建一个简单的PhaseListener并使用它来了解哪些阶段已执行,哪些阶段不执行。

package mypackage;

import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;

public class LifeCycleListener implements PhaseListener {

    public PhaseId getPhaseId() {
        return PhaseId.ANY_PHASE;
    }

    public void beforePhase(PhaseEvent event) {
        System.out.println("START PHASE " + event.getPhaseId());
    }

    public void afterPhase(PhaseEvent event) {
        System.out.println("END PHASE " + event.getPhaseId());
    }

}

faces-config.xml中按如下方式注册,以使其运行:

<lifecycle>
    <phase-listener>mypackage.LifeCycleListener</phase-listener>
</lifecycle>

另见: