快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ete 方法调用,将用户重定向到另一个页面或 Web 资源,然 后使用请求调度器(从 FacesContext 中的请求对象获得)转发到适当的 Web 资源。也可以调用 FacesContext.renderResponse 来重新显示原来的视图。

最重要的是,在利用生命周期组织您的开发工作的同时不会受其束缚。在需要时可以修改默认的生命 周期,而不必担心破坏应用程序。在大多数情况下,您会发现采用 JSF 的生命周期是值得的,因为它非 常符合逻辑。

在执行任何应用程序逻辑之前,必须检验表单;在执行检验之前,必须对字段数据进行转换。如果坚 持采用生命周期,您就可以集中精力考虑检验和转换的细节,而不必关注请求过程本身的阶段。还要注意 ,其他 Web 框架也有相似的生命周期;只不过没这么明显。

一些使用 JSF 的开发人员可能从来没有编写过组件或扩展过框架,而其他开发人员的工作却集中在这 些任务上。 尽管对于几乎任何项目,JSF 生命周期都是相同的,开发人员可以根据其在项目中的角色参 与不同的阶段。如果您主要从事整体应用程序开发,那么可能关注请求处理生命周期中间的几个阶段:

应用请求值

处理检验

更新模型值

调用应用程序

如果您主要从事 JSF 组件开发,那么可能关注生命周期的第一个阶段和最后一个阶段:

恢复视图

显示响应

下面分别讨论一下 JSF 请求处理生命周期的每个阶段,包括事件处理和检验。在开始之前,先看看图 5,图 5 显示 JSF 应用程序生命周期的概况:

图 5. JSF 应用程序生命周期

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

阶段 1:恢复视图

在 JSF 生命周期的第一个阶段 — 恢复视图 中,通过 FacesServlet servlet 发来一个请求。这个 servlet 检查这个请求并提取出视图 ID(视图 ID 由 JSP 页面的名称决定)。

JSF 框架控制器使用这个视图 ID 为当前视图寻找组件。如果这个视图还不存在,JSF 控制器就创建 它。如果视图已经存在,JSF 控制器就使用它。视图包含所有 GUI 组件。

生命周期的这个阶段有三种视图实例:新视图、初始视图和 postback,每种视图的处理方法各不相同 。对于新视图,JSF 构建一个 Faces 页面的视图,并将事件处理函数和检验器连接到组件。视图保存在 一个 FacesContext 对象中。

FacesContext 存储状态信息,JSF 需要使用这些信息为当前请求管理 GUI 组件的状态。 FacesContext 将视图存储在它的 viewRoot 属性中;viewRoot 包含与当前视图 ID 对应的所有 JSF 组 件。

对于初始视图(第一次装载页面),JSF 创建一个空视图。在处理 JSP 页面时,填充这个空视图。填 充初始视图之后,JSF 直接进入显示响应阶段。

对于 postback(用户返回到以前访问过的一个页面),与页面对应的视图已经存在,所以只需恢复它 。在这种情况下,JSF 使用现有视图的状态信息重新构造它的状态。

阶段 2:应用请求值

应用请求值 阶段的目标是获取每个组件的当前状态。首先,必须从 FacesContext 对象获取或创建组 件,然后获取它们的值。组件值常常取自请求参数,但是也可以取自 cookie 或请求头。对于许多组件, 来自请求参数的值存储在组件的 submittedValue 中。

如果组件的直接事件处理属性是 true,那么值被转换为正确的类型并被检验(在下一阶段中进一步进 行转换)。然后,将转换后的值存储在组件中。如果值转换或值检验失败,那么生成一个错误消息并放在 FacesContext 中,在显示响应阶段,这个错误消息与任何其他检验错误一起显示。

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

时间:2011-08-09 IBM Richard Hightower

阶段 3:处理检验

转换和检验一般发生在处理检验 阶段。组件转换并存储它的 submittedValue。例如,如果字段绑定 到一个 Integer 属性,那么值就转换为一个 Integer。如果值转换失败,那么生成

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号