Restore View Phase
当点
击
超
链
接或者表
单
按
钮
,
JSF
请
求被
创
建,
JSF
实现
框架开始
Restore View
阶
段。
这
个
阶
段中,
JSF
实现
框架
为页面
打造
视图
,在
视图
中
组
装事件
处
理器和校
验
器,保存
这
个
视图
到
FacesContext
实
例之中。
FacesContext
实
例包含所有的需要被
单
个
请
求
处
理的信息。所有的
组
件
标签
,事件
处
理器,
转换
器和校
验
器都可以
访问这
个
实
例。
如果是提交
请
求,于
这
个
请
求相
对应的视图早已经存在,在这个阶段,
JSF实现框架通过使用已保存在客户端或者服务器端的状态信息来恢复这个视图。
Apply Request Values Phase
在恢复组件数之后,组件树中的每个组件从请求参数中使用它的
decode方法,解析出该组件的新值,然后,这些新值被存储到相应的组件之中。如果转换失败,会生成一个错误信息,和这个组件关联上,放到
FacesContext的错误消息队列之中。这个错误消息将会在
Render View Phase这个阶段中显示,
Validation
Processing Phase产生的校验错误也采用如此方式。
如果没有任何
decode
方法或者事件
监
听
调
用
renderResponse
于当前的
FacesContext
实
例,
JSF
实现
框架跳
过
Render Response
阶
段。
这
个
阶
段中,如果一个事件被安排到
队
列中,
JSF
实现
框架广播
这
个事件
给对
此事件感
兴
趣的
监
听器。
在
这
个
阶
段中,如果
页
面上的一些
组
件有
immediate
属性被
设
置
为
true
,那么校
验
器,
转换
器和
这
个
组
件上的事件会被立即
处
理。
这时,如果
WEB应用需要重定向到一个不同的
WEB应用或者
Non-Faces Response组件,需要调用
FacesContex.responseComplete.
这个阶段的末尾,设置组件的新值,消息和事件被放到队列之中。
Process Validations Phase
在这个阶段,
JSF实现框架处理组件树中所有已经注册于组件之上的校验器,用指定的规则检验组件的属性值。如果组件的属性值无效,
JSF实现框架向
FacesContext实例中添加一条错误消息,然后直接跳向
Render
Response Phase阶段,附带着错误消息,页面再此被渲染,如果有在
Apply Request
Values Phase阶段产生的转换错误,这类消息也在当前这个阶段显示于页面之上。
任何
validate方法或者事件监听器调用了当前
FacesContext的
renderResponse方法,
JSF实现框架跳至
Render Response Phase阶段。
这个时候,如果应用需要跳转至
Non-Faces Response组件、页面或者其他应用,可以调用
FacesContex.responseComplete方法。如果事件已经被放入队列,
JSF实现框架广播这些事件给感兴趣的监听器。
Update Model Values Phase
JSF实现
框架
检查
数据是有效之后,会遍
历组
件
树,用组件的本地值去设
置相
应
的服
务
端
对
象属性。
JSF
实现
框架只会用表
单输
入
组
件的
值去更新
Bean
的属性。如果本地
值
不能
转
化成
bean
中特定的
Java
类
型,直接跳向
Render Response Phase
阶段,所以页面会渲染错误消息。这种情况类似于检验错误的发生。
如果任何
updateModels方法或者任何监听器调用了
renderResponse,
JSF实现框架跳向
Render Response Phase阶段。
这个时候,如果应用需要跳转至
Non-Faces Response组件、页面或者其他应用,可以调用
FacesContex.responseComplete方法。如果事件已经被放入队列,
JSF实现框架广播这些事件给感兴趣的监听器。
Invoke Application Phase
这
个
阶
段,
JSF实现
框架
才开始处理应用级别的事件,比如表单提交或者链接至另外一个页面。
这个时候,如果应用需要跳转至
Non-Faces Response组件、页面或者其他应用,可以调用
FacesContex.responseComplete方法。
如果正在被处理的页面是从前一个请求状态信息重构而来,页面上的一个组件触发一个事件,这些事件被广播到感兴趣的监听器。
Render Response Phase
这
个
阶
段种,如果
WEB应
用使用
JSP技术
,
JSF实现
框架代理渲染
页
面
给
JSP容器。如果是初始
请
求,
页
面上的
组
件将被添加到
组
件
树
中,作
为
JSP容器
执
行。如果不是初始
请
求,
页
面上的
组
件早已
经被添加到组件树之中,不需要被再此添加。随后,这些组件被渲染成JSP容器可识别的页面标签。
假如是提交请求,在Apply request
values phase, process validation phase
或者
update model phase有错误发生,原始页面已经被渲染。假使页面上有
message或者
messages标签,排队的错误消息会显示在页面上。
视图的内容被渲染之后,随后响应的状态被保存,以保证子请求序列能存储之,并对
Restore View
Phase这个阶段可用。
分享到:
相关推荐
5.4.2 使用托管bean作为JSF页面的支撑bean 第6章 导航模型 6.1 使用隐式导航 6.2 JSF导航系统概述 6.2.1 回顾MVC-控制器 6.2.2 Navigation HandleI-幕后主管 6.2.3 Faces动作方法说明 6.3 构建导航规则 6.3.1 静态...
5.4.2 使用托管bean作为JSF页面的支撑bean 第6章 导航模型 6.1 使用隐式导航 6.2 JSF导航系统概述 6.2.1 回顾MVC-控制器 6.2.2 Navigation HandleI-幕后主管 6.2.3 Faces动作方法说明 6.3 构建导航规则 6.3.1 静态...
一年以来,Java Server Faces 是 J2EE Web 开发方面最值得期待的技术之一。...JSF 提供的 UI 框架由 UI组件和运行时组成,运行时负责把这些组件呈现给客户端并管理页面的生命周期(错误、验证器、导航等等)。
2.8 JSF的运行流程和生命周期 109 2.8.1 恢复视图阶段 110 2.8.2 应用请求值阶段 110 2.8.3 处理输入校验阶段 111 2.8.4 更新模型的值阶段 111 2.8.5 调用应用阶段 111 2.8.6 生成响应阶段 111 2.9 利用JSF的消息 ...
在这篇文章中,将对JSF框架和组成JSF框架的各种关键部件进行一个简单的介绍,接下来详细介绍JSF的请求处理生命周期的各种状态,然后提供一个简单的应用来示范其各种特性。 由于文件较大,WINRAR分两部上传
在这篇文章中,将对JSF框架和组成JSF框架的各种关键部件进行一个简单的介绍,接下来详细介绍JSF的请求处理生命周期的各种状态,然后提供一个简单的应用来示范其各种特性。 由于文件较大,WINRAR分两部分上传
JavaServer Faces 2.0, The Complete Reference 自从JSF 2.0立项起,就一直关注他,除了他承诺的那些技术和思想上的先进性,更多的原因是由于他为适应Web 2.0开发应用而提出的简化开发...d、 增强的事件模型和生命周期
141 9.1.2 JSF应用程序配置 142 9.2 一个简单的JSF应用 142 9.2.1 JSF应用程序开发步骤 143 9.2.2 用户登录实例 143 9.3 JSF应用程序架构 147 9.3.1 JSF请求处理生命周期 147 9.3.2 JSF事件驱动模型 148 9.3.3 JSF...
PowerDesigner是Sybase的企业建模和设计解决方案,采用模型驱动方法,将业务与IT结合起来,可帮助部署有效的企业体系架构,并为研发生命周期管理提供强大的分析与设计技术。 六、研究方法 该毕业设计采用的研究方法...
优点: 对覆盖绑定(overriding binding)、验证(validation)等提供生命周期管理 与许多表示层技术/框架无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF 等 便于测试——归功于IoC 缺点: ...
11.1.2 JSF框架的请求处理生命周期 201 11.1.3 JSF应用程序结构 202 11.2 MyEclipse创建基于JSF框架的项目 202 11.2.1 创建JSF项目 202 11.2.2 JSF配置文件编辑器 203 11.2.3 创建Managed Bean 204 11.2.4 创建JSP...
1.5. Seam 页面流:猜数字范例........................................................................................................................................ 40 1.5.1. 理解代码....................
5.1 Servlet的概念和生命周期 65 5.2 如何编写Servlet 67 5.3 使用Eclipse和Tomcat开发Servlet实例——输出字符串响应 72 5.4 小结 77 第6章 JSP——前后台更好地分离 79 6.1 JSP的概念 79 6.2 JSP页面...
9.1 持久化生命周期 9.1.1 对象状态 9.1.2 持久化上下文 9.2 对象同一性和等同性 9.2.1 引入对话 9.2.2 对象同一性的范围 9.2.3 脱管对象的同一性 9.2.4 扩展持久化上下文 9.3 ...