快速业务通道

怀疑论者的JSF: JSF应用程序的生命周期 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
命周期

怀疑论者的JSF: JSF应用程序的生命周期 - 编程入门网

阶段 1:恢复视图

在 JSF 生命周期的第一个阶段 ——恢复视图 —— 中,会有一个来自 FacesServlet 控 制器的请求。控制器会对请求进行考查,并提取出视图的 ID,这是由 JSP 页面的名字来确 定的。

JSF 框架控制器使用这个视图 ID 来为当前的视图查找组件。如果这个视图尚未存在,那 么 JSF 控制器就会创建它。如果这个视图早已存在,那么 JSF 控制器就会使用它。这个视 图包含了所有的 GUI 组件。

生命周期的这个阶段表示为三个视图实例:新视图、原始视图和后视图,每个视图的处理 方式都不相同。在 新视图 的情况中,JSF 会构建 Faces 页面的视图,并将事件处理程序和 验证程序绑定到组件上。这个视图被保存在一个 FacesContext 对象中。

FacesContext 对象包含了 JSF 用来管理当前会话中当前请求的 GUI 组件状态所需要的 所有状态信息。FacesContext 将视图保存在自己的 viewRoot 属性中;viewRoot 包含了当 前视图 ID 的所有 JSF 组件。

在 原始视图 的情况中(第一次加载的是一个页面),JSF 会创建一个空视图。这个空视 图会在用户事件产生时进行填充。JSF 可以直接从原始视图过渡到进行响应的阶段。

在 后视图(postback) 的情况中(用户返回之前访问过的页面),包含页面的视图早已 经存在了,因此只需要进行恢复就可以了。在这种情况中,JSF 就使用现有视图的状态信息 来重构状态。后视图的下一个阶段是应用请求值。

阶段 2:应用请求值

应用请求值 阶段的目的是让每个组件检索自己当前的状态信息。这些组件必须首先通过 FacesContext 对象进行检索或创建(使用其值)。虽然组件值也可以从 cookie 或头文件中 进行检索,但是它们通常是通过请求参数进行检索的。

如果一个组件的即时事件处理属性 没有 设置为 true,那么就会对这些值进行转换。因 此,如果 域 被绑定到一个 Integer 属性上,那么该值就会被转换为一个 Integer 类型。 如果值的转换失败了,那么就会生成一个错误消息,并在 FacesContext 中进行排队,在产 生响应的阶段会显示其中的消息,同时还会显示所有的验证错误。

如果一个组件的即时事件处理属性 的确 被设置为 true,那么这些值就会被转换为适当 的类型,并进行有效性验证。然后转换后的值会被保存到组件中。如果值转换或值的有效性 验证失败了,就会生成一个错误消息,并在 FacesContext 中进行排队,在产生响应的阶段 会显示其中的消息,同时还会显示所有的验证错误。

处理验证

生命周期中的第一个事件处理发生在应用请求值阶段之后。在这个阶段中,每个组件都有 一些值需要根据应用程序的验证规则进行有效性验证。这些验证规则可以是预先进行定义的 (JSF 中提供的),也可以由开发者进行定义。用户所输入的值会与这些验证规则进行比较 。如果说输入的值无效,就会向 FacesContext 中添加一个错误消息,并且该组件会被表示 为无效的。如果一个组件被表示为无效的,那么 JSF 就会转到产生响应的阶段,在这个阶段 中会显示当前的视图,以及验证错误消息。如果没有有效性验证错误,那么 JSF 就会转到更 新模型值的阶段。

阶段 3:更新模型值

JSF 应用程序生命周期中的第三个阶段 ——更新模型值 —— 负责更新服务器端模型的 实际值,通常来讲,这都是通过更新后台 bean(称为管理 bean)的属性实现的。只有那些 与组件值绑定在一起的 bean 属性才会被更新。注意这个阶段发生在有效性验证之后,因此 可以确保拷贝到 bean 属性的值都是有效的(至少在表单域一级都是有效的;在业务规则一 级仍可能无效)。

怀疑论者的JSF: JSF应用程序的生命周期(3)

时间:2011-04-11 IBM Rick Hightower

阶段 4:调用程序

在生命周期的第四个阶段

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