快速业务通道

JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段监听器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
---- BEFORE PHASE APPLY_REQUEST_VALUES 2 ------ AFTER PHASE APPLY_REQUEST_VALUES 2 ------ BEFORE PHASE PROCESS_VALIDATIONS 3 GroupConverter.getAsObject ContactController.getAvailableGroups() ZipCodeValidator.validate() ContactValidators.validatePhone() TagConverter.getAsObject TagConverter.getAsObject ContactController.getAvailableTags() ContactController.getAvailableTags() ------ AFTER PHASE PROCESS_VALIDATIONS 3 ------ BEFORE PHASE RENDER_RESPONSE 6 ContactController.getAvailableGroups() GroupConverter.getAsString GroupConverter.getAsString GroupConverter.getAsString ContactController.getAvailableTags() TagConverter.getAsString TagConverter.getAsString TagConverter.getAsString TagConverter.getAsString ContactController.getContacts() ------ AFTER PHASE RENDER_RESPONSE 6 REQUEST END

在处理检验阶段,为选择的组调用 GroupConverter.getAsObject() 方法。调用 TagConverter.getAsObject() 两次,分别针对选择的每个标记。在处理检验阶段,调用前面编写的定制 检验器 — ZipCodeValidator.validate() 和 ContactValidators.validatePhone()。在显示响应阶段, 为可用组和可用标记列表中的每个对象,调用转换器的 getAsString() 方法。

现在可以假设,在 ContactController.getAvailableGroups() 和 ContactController.getAvailableTags() 每次访问数据库时,您需要访问数据库 4 次才能获得组列表和 标记列表。您可能希望添加一些逻辑,以便只为每个请求访问数据库一次。例如,可以只在数据还未装载 过的情况下,才从动作装载数据。

JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段监听器(19)

时间:2011-08-09 IBM Richard Hightower

提交有效表单时的输出见清单 47:

清单 47. 完整的表单提交处理过程

------ BEFORE PHASE RESTORE_VIEW 1 ------ AFTER PHASE RESTORE_VIEW 1 ------ BEFORE PHASE APPLY_REQUEST_VALUES 2 ------ AFTER PHASE APPLY_REQUEST_VALUES 2 ------ BEFORE PHASE PROCESS_VALIDATIONS 3 GroupConverter.getAsObject ContactController.getAvailableGroups() ZipCodeValidator.validate() ContactValidators.validatePhone() ContactValidators.validatePhone() ContactValidators.validatePhone() TagConverter.getAsObject TagConverter.getAsObject ContactController.getAvailableTags() ContactController.getAvailableTags() ------ AFTER PHASE PROCESS_VALIDATIONS 3 ------ BEFORE PHASE UPDATE_MODEL_VALUES 4 Contact.setFirstName() ------ AFTER PHASE UPDATE_MODEL_VALUES 4 ------ BEFORE PHASE INVOKE_APPLICATION 5 ContactController.persist() ------ AFTER PHASE INVOKE_APPLICATION 5 ------ BEFORE PHASE RENDER_RESPONSE 6 ContactController.getContacts() ContactController.getContacts() ContactController.getContacts() ContactController.getContacts() ContactController.getContacts() ContactController.getContacts() Contact.getFirstName() ContactController.getContacts() ContactController.getContacts() ------ AFTER PHASE RENDER_RESPONSE 6 REQUEST END

清单 47 包含请求生命周期的所有阶段。注意,这里经过了 INVOKE_APPLICATION 阶段并调用了 persist():ContactController.persist()。

添加一个对象级检验框架

可以使用 PhaseListener 捕捉阶段监听器事件并改变 JSF 处理请求的方式。假设您希望在 JSF 中添 加自己的对象级检验框架。可以使用清单 48 这样的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号