JSF的生命周期--ADF Faces入门(文档阅读)

原创 2011年01月20日 15:21:00

 由于ADF Faces是基于JSF框架扩展出来的,因此任何使用ADF 创建的应用都会使用到标准的JSF页面请求生命周期,与此同时ADF Faces还提供了额外的功能,例如client-side value lifecycle, 一个允许你可以在页面中创建可提交的region的subform组件,就避免了在单个页面以及额外的范围中使用多个forms的劣势。为了更好的理解RCF的生命周期,最好先去好好了解下标准的JSF生命周期。

当一个JSF页面被提交和一个新的页面被请求的时候,JSF的请求生命周期会被调用。生命周期会处理页面所提交的值,验证当前页的组件,导航到结果页及显示结果页的组件,除此之外,同时还保存及恢复了状态。JSF生命周期使用UI组件树去管理faces组件的显示。这树就是运行时一个JSF页面的表现:每个UI组件都会相对应到组件树中的一个UI组件实例。在JSF应用中,页面请求生命周期被FacesServlet管理着。FacesServlet对象创建一个叫FacesContext的对象,FacesContext包括了请求过程中的必须信息并且会调用一个对象执行生命周期。下图为JSF中的一个页面请求的生命周期,如图中,事件都会在每一个阶段的前后进行处理。

Restore View:创建组件树阶段。如果这不是初始化渲染,也就是说如果页面被提交回去给服务器的话,组件树会以恰当的状态恢复。另一种情况,如果是初始化渲染,组件树会被创建,与此同时,生命周期会跳转到Render Response phase.

Apply Request Values:每一个组件树上的组件都会通过它的decode方法从请求参数中提取新的值并且在本地存储这些值。大部分相关事件这时候都会排成队列等候处理。如果一个组件的immediate属性被设置为true,这时候针对这个组件的验证,转换以及相关事件会在这个阶段进行处理。

Process Validations:本地的值会被从输入类型转换到强调的数据类型。如果转换失败的话,这个阶段仍然会继续到完成(所有余下的转换器,验证器,以及必要的检查都会运行),但是这步完成之后,生命周期会跳转到Render Response phase。如果没有失败的话,组件的必须属性会被检验。如果值为true,并且相关区域包含了值,则相关的验证器这时候会跑起来。如果必须值为true,并且相关区域没有值的话,这步也完成了(所有余下的转换器会被执行),但是生命周期会跳转到Render Response phase。如果必须值为false,尽管没有任何值,这步会直接完成,这种情况下没有任何验证器会被执行。在这一步的最后阶段,本地数据值的转换版本会被设置,任何验证以及转换信息会以队列形式存储在FacesContext对象中,而且任何值的改变事件都会被交付。总而言之,对于一个可编辑的输入框来说,Process Validations的流程如下:

1。如果转换失败,必须验证以及验证器就不会执行。

2。如果转换失败而且必须验证检查失败,验证器也不会执行。

3。如果转换和必须验证都成功了,所有的验证器都会执行。即使多个验证器中的其中一个执行失败,但是余下的验证器也会全部执行完。这是因为当用户察觉了错误以后,你应该尽可能的反馈错误信息给用户,让他们知道他所输入的数据错在何处。

Update Model Values:组件的验证本地值会被转移到model中,并且本地的备份会被丢弃。

Invoke Application:应用级逻辑被执行,例如事件处理。

Render Response:组件树上的组件被渲染了。状态信息会为子顺序的请求以及Restore View阶段存储起来。

例子:

将页面run起来,这时候我们输入"June 25, 2005",然后点击按钮。以下为生命周期的传值过程。

Restore View----》Apply Request Values--按钮中的ActionEvent入列,"June 25, 2005",作为输入数据保存起来----》

Process Validations---转换器会将输入字符串转换为日期类型,转换后的日期对象会被存储在本地。此时localValueSet属性被设置为true并且submitedValue属性被设置为null。valueChangeListener进入队列。如果提交的值是不合法的,转换器会抛出异常并且放置一个消息到队列中。这个组件仍然会与原来的值绑定。生命周期这时候会跳转到最后一步,即Render Response,并且不正确的值会被渲染。--事件处理  输入框的valueChangeListner会被调用--》Update Model Values----输入的日期会被传到model,这时,localValueSet的值会被设置为false并且localValue属性会被设置为空。---》Invoke Application---事件处理 按钮的actionListner触发--》Render Response---组件的值是通过调用getValue方法获取的,用EL表达式:#{myBean.date}并且从model返回日期。转换器是使用getAsString获取到日期值的,同时转换为字符串。如果输入的值转换或者验证失败,submitedValue会代替原来的值显示出来。

优化(optimized)生命周期----ADF Faces入门(文档阅读)

ADF Faces提供了一种优化的生命周期,用以当你需要JSF页面请求生命周期(包括转换和验证)只为页面中的某些组件跑的时候。看例子吧:如图,有一个input框,两个radioButton以及一个ou...
  • com_d_d
  • com_d_d
  • 2011年01月21日 09:27
  • 710

JSF入门之helloworld

一 什么是JSF: JSF是JCP开发的一种Java标准,用于构建web应用程序新标准的Java框架,他提供了一种以组件为中心来开发Java web用户界面的方法,从而简化了开发。 二 JSF体系结...
  • zdp072
  • zdp072
  • 2014年08月26日 15:33
  • 1701

JSF, ADF Faces

Action, ActionListener[Quote]Action listeners are provided by JSF to make it easier to handleaction ...
  • believefym
  • believefym
  • 2009年03月23日 09:22
  • 847

使用 Ajax、JSF 和 ADF Faces 开发智能 Web UI

 使用 Ajax、JSF 和 ADF Faces 开发智能 Web UI 作者:Andrei Cioroianu 了解如何使用 Ajax 技术以及 JavaServer Faces 和 ADF F...
  • elevenXL
  • elevenXL
  • 2008年02月01日 21:58
  • 2142

ADF11g-027:自定义JSF Validator

介绍 在ADF中,我们有很多方式给组件添加验证。 1.直接在组件的validator属性上指定一个manage bean中的method public void validate(Faces...
  • ygj26
  • ygj26
  • 2013年01月31日 14:28
  • 2529

JSF生命周期的6个阶段

1 重建视图: 建议组件树,如果是首次渲染,则组件树被重置合适的状态;如果是首次渲染,则   组件树被创建跳到响应阶段。 2 应用请求值: 树中的每个组件都能从请求参数中提取的新的值,并把值存储本地....
  • amwiacel
  • amwiacel
  • 2013年11月07日 14:56
  • 2218

使用ADF Faces 之一:开发用户界面(基于AJAX)

开发环境:JDeveloper 11.1.2.1.0。 完成《Developing Ajax-Based User Interfaces with ADF Faces Rich Client C...
  • Beckben
  • Beckben
  • 2014年08月19日 18:45
  • 364

ADF调用window打印

打印说明: 1 打印的页面不是jsff 2打印的
  • amwiacel
  • amwiacel
  • 2014年06月03日 09:41
  • 1168

JSF运行流程和生命周期介绍

JSF是一个Web应用,也会遵循请求/相应的架构,与JSP的生命周期完全相似:客户端发送一个HTTP请求,服务器端对请求进行处理之后,向客户端送回HTTP响应,整个JSP生命周期完成。 JSF将请求...
  • zhang434
  • zhang434
  • 2013年09月02日 16:55
  • 1188

ADF jsf或者jspx页面在运行执行初始化方法

有时候有这样的需求,在运行一个页面jsf或者jspx之前需要进行一些初始化的操作,那么可以这样   在页面的头有个  的标签  大家可以在这个标签的 Common属性中 找到 一个 BeforeP...
  • yyyyu3
  • yyyyu3
  • 2013年10月28日 16:51
  • 1565
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSF的生命周期--ADF Faces入门(文档阅读)
举报原因:
原因补充:

(最多只允许输入30个字)