快速业务通道

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

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

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

时间:2011-04-11 IBM Rick Hightower

与很多流行的观点不同,我们无需了解技术工作原理的所有细节,就可以编写 JSF 应用 程序。您只需要给自己设置一个项目,并从头到尾不断修修补补,这样就可以学习到大量的 知识。另一方面,理解必要的基础知识可以使您的开发工作更加有效 —— 而且会节省很多 时间。

在本系列 怀疑论者的 JSF 的第 2 篇文章中,我们将逐一介绍一下 JSF 请求处理生命周 期的 5 个阶段。我们将介绍在每个阶段中会发生什么,以及这些阶段是如何相互连接在一起 的,然后使用一个示例程序来展示实际的生命周期。随着学习的深入,我们还将介绍如何使 用在 第 1 部分 中简要提及的一些内置的 JSF 组件。我们还将向您介绍如何在 JSF 开发中 采用 Struts Tiles,以及如何组合使用 JSF 和 JavaScript 技术进行即时事件的处理。

正如上一篇文章中介绍的一样,示例程序的默认编译环境是 Maven。您可以通过点击页面 顶部或底部的 Code 图标下载源代码。为了简单性起见,您会发现与上一篇文章中一样的示 例设置。有关编译环境的设置的详细说明,请参阅 参考资料,其中包括使用 Ant(而不是 Maven)来编译并运行示例程序的说明。

JSF 生命周期:概述

JSF 程序生命周期的 5 个阶段如下(注意每个阶段的事件处理):

恢复视图

应用请求的值;处理验证

更新模型值;处理事件

调用程序;处理事件

进行响应;处理事件

这 5 个阶段显示了 JSF 通常处理 GUI 的顺序。虽然这个清单列出了每个阶段中事件处 理的可能执行顺序,但是 JSF 的生命周期很难是固定一成不变的。您可以通过忽略某个阶段 或合并整个生命周期从而对执行顺序进行修改。例如,如果一个无效的请求值被拷贝到一个 组件中,那么当前的视图就会重新显示,而有些阶段就可能不会执行。在这种情况中,您可 以执行一个 FacesContext.responseComplete 方法调用,将用户重定向到一个不同的页面上 ,然后使用请求分发器(从 FacesContext 中的请求对象中获得)将其转发到一个适当的 Web 资源上。另外,您可以调用 FacesContext.renderResponse 重新显示原来的视图。(详 细信息请参看下面的示例程序。)

关键是让生命周期构成您的开发项目,而不完全依赖于生命周期。在需要时,您可以修改 生命周期,而不用担心破坏您的程序。在大部分情况中,您会发现 JSF 的生命周期是值得遵 守的,因为它的逻辑非常好。表单必须在任何应用程序逻辑执行之前进行验证,并且在进行 验证之前,必须对域中的数据进行转换。遵守生命周期的规定,可以让您更自由地考虑有关 验证和转换的问题,而不是请求处理本身的阶段。有一点非常重要:其他 Web 框架也都具有 类似的生命周期;它们只不过是没有很好地进行宣传。

专注

有些使用 JSF 的开发者可能从来都不会编写一个组件,也不会对框架进行任何扩展;而 另外一些人则专注于这种任务的开发。尽管 JSF 的生命周期与大部分那其他项目都是相同的 ,但是根据在项目中的角色您可以采用不同的阶段。如果您更专注于通用的应用程序开发, 就可能会关注请求处理生命周期的中间阶段:

应用请求值

更新模型值

调用程序

如果您专注于 JSF 组件的开发,就可能会关注于整个生命周期中的第一个阶段和最后一 个阶段:

恢复视图

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

时间:2011-04-11 IBM Rick Hightower

进行响应

在接下来的几节中,我们将遍历 JSF 请求处理生命周期的每个步骤,包括事件处理和验 证。了解了每个步骤的基本知识之后,我们将简要介绍一个示例程序,它可以展示这些步骤 如何一起使用。在开始之前,首先来看一下图 1,这是一个有关 JSF 生命周期的图。

图 1. JSF 生

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