Xpages 执行的生命周期

  Xpages基于JSF构建,因此有了生命周期的概念。一共分为6个周期。分别为:

1、RESTORE_VIEW

2、APPLY_REQUEST_VALUE

3、PROCESS_VALIDATION

4、UPDATE_MODEL_VALUE

5、INVOKE_APPLICATION

6、RENDER_RESPONSE

检测生命周期可用通过以下代码:

 1 package combestv10;
2
3 import javax.faces.event.PhaseEvent;
4 import javax.faces.event.PhaseId;
5 import javax.faces.event.PhaseListener;
6
7 public class LifeCycleListener implements PhaseListener {
8
9 private static final long serialVersionUID = 1L;
10
11 public PhaseId getPhaseId() {
12 return PhaseId.ANY_PHASE;
13 }
14
15 public void beforePhase(PhaseEvent event) {
16 System.out.println("开始 PHASE :" + event.getPhaseId());
17 }
18
19 public void afterPhase(PhaseEvent event) {
20 //System.out.println("结束 PHASE :" + event.getPhaseId());
21 }
22
23 }

然后在face-config.xml文件中增加以下代码:

1 <lifecycle>
2 <phase-listener>combestv10.LifeCycleListener</phase-listener>
3 </lifecycle>

  今天提到这个问题主要是因为我在处理按钮的click事件发现一个奇怪的现象,就是执行的时候只执行了生命周期1、2、6,把4、5跳过了,这样的结果就是数据没能保存到文档中。

在生命周期中4、UPDATE_MODEL_VALUE主要操作就是把数据写到Document中。

  问题出现的时候后台也没有报错,后来在Xpages添加了一个"显示错误(多个)"控件,这个控件用来显示页面错误信息。之后执行按钮事件的时候出现了"验证错误:值无效",这样问题就找到了,由于在生命周期3、PROCESS_VALIDATION中没有通过,导致跳过4、5.  解决掉验证错误之后正常了。

原文地址:https://www.cnblogs.com/luoaz/p/2409770.html