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这个阶段可用。
分享到:
相关推荐
其中,JSF的生命周期管理机制是其核心特性之一,它包括了一系列有序的阶段,每个阶段都可能触发不同的事件,这些事件需要被正确地处理。 #### 一、JSF生命周期概述 在深入了解JSF中的事件处理之前,我们先简要回顾...
它通过事件驱动模型处理用户交互,并且有强大的生命周期管理。 2. **组件库**:JSF包含一系列可重用的UI组件,如按钮、输入字段、表格等,这些组件可以方便地在页面上进行布局和组合。例如,`h:inputText`用于创建...
JSF生命周期是理解其工作原理的关键,它包括六个主要阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用逻辑和渲染响应。在这些阶段中,每个阶段都有特定的任务,确保用户输入被正确处理并更新到服务器端...
**JSF(JavaServer Faces)应用程序的生命周期**是开发者在构建Web应用程序时必须理解的关键概念。JSF是一种Java EE(现在称为Jakarta EE)技术,用于构建用户界面,特别是用于服务器端的交互式Web应用程序。它提供...
这可能包括如何设置JSF和Spring的集成环境,创建JSF页面并与Spring服务交互,以及如何处理酒店预定的业务逻辑。文件可能包含源代码示例、配置文件和解释性的文本,帮助读者理解系统的具体实现。 总之,JSF和Spring...
5. **JSF生命周期**: JSF有六步生命周期,包括初始化、应用请求值、处理验证、更新模型值、调用应用事件和渲染响应。理解这个生命周期对于优化性能和处理错误至关重要。 6. **转换和验证**: 在学生管理系统中,可能...
JSF的核心概念包括组件、事件、生命周期和渲染。组件是UI的基本构建块,如按钮、文本输入等,它们通过JSF的XML配置文件( faces-config.xml)或注解进行定义和连接。事件处理机制允许组件之间进行通信,而JSF的四个...
每个JSF页面都是由多个组件组成的,这些组件可以独立配置和重用。例如,可以在多个地方使用同一个成绩展示组件,只需改变组件的数据源即可。 **5. 视图和导航** 在成绩管理系统中,视图和导航是关键。JSF支持基于...
它们是Java类,可以通过JSF生命周期进行管理,提供了在视图和控制层之间传递数据的方法。在学生管理系统中,会有一个或多个Managed Beans来处理学生信息的增删改查操作。 4. **转换与验证**: JSF提供了内置的转换器...
JSF的核心在于其生命周期,包括六种不同的阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用和渲染响应。通过JSF,开发者可以将业务逻辑与视图层分离,简化开发过程。 **Hibernate** Hibernate是一个...
2. **JSF请求生成JSF响应**:这是最常见的场景,当用户通过JSF组件提交表单时,请求会映射到JSF实现的控制器,然后按生命周期的顺序执行,包括解析请求参数、更新模型值、执行验证和事件处理等。 **生命周期情景** ...
JSF的生命周期包括六个阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用业务逻辑和渲染响应。 **二、JSF环境搭建** 首先,你需要安装Java Development Kit (JDK) 和一个集成开发环境(IDE),如Eclipse或...
1. **JSF架构**:JSF的组件模型、事件处理模型和生命周期,这些都是理解JSF如何工作的基础。JSF将用户界面分解为可重用的组件,并通过事件驱动的模型来处理用户输入。 2. **组件库**:JSF包含一组内置的UI组件,如...
JSF 的生命周期管理是理解其工作原理的关键所在。JSF 2.2的生命周期主要包括以下几个阶段: 1. **恢复视图(View Restore)**:在这个阶段,JSF会从客户端请求中恢复出视图树。如果视图尚未创建,则会从视图声明语言...
4. **配置JSF和RichFaces**:在web.xml中配置JSF生命周期和RichFaces扩展。 5. **数据库连接**:建立与数据库的连接,编写SQL查询以存取商品数据。 6. **测试和调试**:进行功能测试,确保每个功能都能正常工作,...
每个组件都有自己的生命周期,包括初始化、渲染等阶段。JSF通过Model-View-Controller(MVC)架构来组织应用程序,简化了前后端交互,使得开发者能够专注于业务逻辑而无需过多关注底层细节。 **2. IBM的JSF实现** ...
总之,JSF的事件处理机制提供了灵活的方式来响应用户操作,同时结合生命周期管理,确保了应用程序能够正确地处理输入、验证数据、更新模型并呈现响应。理解和掌握这些概念对于开发健壮的JSF应用程序至关重要。通过...
1. **JSF生命周期**:JSF有六个主要阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用应用业务逻辑以及渲染响应。开发者可以在这些阶段插入自定义行为。 2. **JSF页面(Facelets)**:JSF使用Facelets...
通过深入学习本教程,您将掌握JSF的基础知识,包括组件使用、Managed Beans的创建、EL表达式的运用以及JSF生命周期的理解。结合实际项目实践,您将能够熟练运用JSF来构建高效、稳定的Web应用程序。