JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段监听器 - 编程入门网
t javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
@SuppressWarnings("serial")
public class DebugPhaseListener implements PhaseListener {
public void beforePhase(PhaseEvent phaseEvent) {
System.out.println("------ BEFORE PHASE " + phaseEvent.getPhaseId());
}
public void afterPhase(PhaseEvent phaseEvent) {
System.out.println("------ AFTER PHASE " + phaseEvent.getPhaseId());
if (phaseEvent.getPhaseId() == PhaseId.RENDER_RESPONSE) {
System.out.println("REQUEST END\n\n");
}
}
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
}
PhaseListener 会在每个 JSF 阶段之前和之后通知您。用 getPhaseId 方法告诉 JSF 您对哪些阶段 感兴趣。PhaseId.ANY_PHASE 表示希望在每个阶段之前和之后都得到通知。DebugPhaseListener 输出阶 段事件名称,让您可以看到发生了什么情况。我在每个检验、转换和动作方法中添加了 System.out.println 语句。还在 firstName 属性的获取方法/设置方法中添加了 System.out.println 语句,让您可以看到系统什么时候访问它。 接下来,必须在 faces-config.xml 中注册阶段监听器,见清单 43: 清单 43. 在 faces-config.xml 中注册 DebugPhaseListener
阶段监听器的输出 清单 44 给出第一次装载表单时的输出: 清单 44. 第一次装载表单时 DebugPhaseListener 的输出
根据 清单 42 中的代码,JSF 发现这个请求是对一个视图的初始请求,它使用 JSP 构建视图,然后 直接进入显示响应阶段。注意,在显示响应阶段,会调用控制器的 getContacts() 方法。 在单击 Add New 链接时,会看到清单 45 所示的输出: 清单 45. 调用 addNew() 方法之后 DebugPhaseListener 的输出
addNew() 方法会使表单显示出来。因为 addNew() 是一个 postback,所以 JSF 会经历所有阶段。因 为在调用 addNew() 方法之前不显示表单,所以在调用 addNew() 方法之前不处理它的字段。 接下来,输入无效的 ZIP 编码(比如 aaa)和无效的电话号码(比如 aaa)。然后选择两个标记和一 个组,并单击 Add 按钮。这时会看到清单 46 所示的输出: 清单 46. 输入无效 ZIP、无效电话号码、一个组和一些标记之后的输出
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |