我们之前提到过,XPages 是基于 JSF 1.1 开发的,在 JSF 中有个很重要的概念:生命周期的六个阶段

在开发 XPages 的过程中,我们经常遇到一段代码会运行很多次的情况,实际上就是在不同的阶段执行的。我们通过 LifeCycleListener 可以记录每个阶段的开始/结束,有助于我们更深入的理解 XPages。结果类似于:

HTTP JVM: Before phase: RESTORE_VIEW 1
HTTP JVM: After phase: RESTORE_VIEW 1
HTTP JVM: Before phase: APPLY_REQUEST_VALUES 2
HTTP JVM: After phase: APPLY_REQUEST_VALUES 2
HTTP JVM: Before phase: PROCESS_VALIDATIONS 3
HTTP JVM: After phase: PROCESS_VALIDATIONS 3
HTTP JVM: Before phase: UPDATE_MODEL_VALUES 4
HTTP JVM: After phase: UPDATE_MODEL_VALUES 4
HTTP JVM: Before phase: INVOKE_APPLICATION 5
HTTP JVM: After phase: INVOKE_APPLICATION 5
HTTP JVM: Before phase: RENDER_RESPONSE 6
HTTP JVM: some debug info from print()…
HTTP JVM: After phase: RENDER_RESPONSE 6