JSF
页
面的生命周期
类
似于
JSP
页
面。当客
户
端
为页
面
创见
一个
HTTP
请
求
时
,服
务
器端响
应这个页面并翻译
HTML
。因
为
JSF
提供了
额
外功能,因此,生命周期提供了一些
额
外的服
务
去
处
理
页
面。
作
为
开
发
人
员,除了
需要知道
生命周期过程中中,比如什么时候对进行数据校验、数据转换和事件发生时刻这些外,还可能需要知道这些能做什么;如何改变这些的处理方式和时间。
一个树形的
UI组件描述一个
JSF页面,叫视图。当客户端为这个页面创造一个请求,生命周期开始,在整个生命周期中,考虑到页面当前视图状态从前一个子阶段保存而来,
JSF的实现框架(
MyFaces、
OpenFaces、
Glassfish等)必须创建这个视图。当客户端提交一个页面,
JSF实现框架必须执行几个任务,比如校验当前视图中输入的数据,然后转换这些数据为服务端所需要的数据类型。
JSF实现框架执行所有这些任务——生命周期中一系列的步骤。
哪一个步骤需被执行取决于请求是否出之于
JSF应用和响应是否生成于
JSF生命周期的渲染阶段。
JSF应用支持两种响应和两种请求类型:
1.
Faces Response, 一种
Servlet响应,创建于
Render Response Phase阶段
2.
Non-Faces Response, 一种
Servlet响应,不在
Render Response Phase阶段创建的,比如一个
JSP页没有包含任何的
JSF组件。
3.
Faces Request, 一种
Servlet请求,由前一个已生成的
Faces响应发送。比如一个表单是从一个
JSF的
UI组件发送,并且请求的
URI指示应用
JSF的组件树去处理这个请求。
4.
Non-Faces Request, 一种
Servlet请求发送到一个应用组件,比如
JSP或者
Servlet,而不是直接发送到
JSF的 组件上。
因
为这
些不同
类
型的
请
求和响
应
,
导
致三种可能的生命周期
场
合存在于
JSF
应
用之中:
1.
Non-Faces
Request产
生
Faces
Response
比如,点击
HTML页面上的超链接,打开一个
JSF页面,从一个
Non-Faces Request渲染
Faces
Response,
JSF应用必须提供
FacesServer对应关系,来接受传入请求并且传递这些请求到生命周期实现中去处理,表明生命周期处理
Servlet描述怎么样去提供一个对应关系给
FacesServlet。在生成一个
Faces
Response时,
JSF应用必须创建一个新视图,保存
FacesContext对象,以期获得视图必须要的对象引用——
FacesContext.renderResponse, 它立即跳过
Render Response Phase,强制渲染视图。
2.
Faces
Request产
生
Non-Faces
Response
有时,
JSF应用重定向至不同的
WEB应用或者重定向至不包含任何
JSF组件的
JSP、
Servlet,这种情况下,开发人员必须通过调用
FacesContext.responseComplete来跳过
Render Response Phase这个阶段。
FacesContext对象包含了一个特定
Faces
Request的所有的信息,这个方法还可以在
Apply Request Values Phase, Process Validation
Phase和
Update Model Values Phase这三个阶段被调用。
3.
Faces
Request产
生
Faces
Response
这
是
JSF
生命周期中最常
见
的
场
合,它也是
标准请求处理描述下一个阶段的处理方式。这个场合里,包含了
JSF组件利用
FacesServlet提交一个请求到
JSF应用。因为请求已经被处理,无须额外的步骤去生成响应,在相关的阶段,所有的监听器,校验器和转换器会自动地被调用。
标
准
请
求
处
理生命周期
标
准
请
求
处
理生命周期代表第三种
场
合。多数
JSF
用
户
不要抱怨生命周器
处
理方式。确
实
,
JSF
技
术
足
够
丰富去
执行页面处理过程,所以开发人员不用去面对象组件的状态改变这类复杂的渲染问题。比如,选择一个
checkbox会影响到页面上其他组件的外观行为。
JSF会正确地处理这些事件,并且不会让页面渲染而不反映出这个变化。
总
体
说
来,生命周期有两种
请
求,初始
请
求和提交
请
求。用
户
第一
请
求
页
面
时
,会建立一个初始
请
求,
请求的页面会被服务器端装载,并转换成
HTML,响应给浏览器,当用户在这个页面上提交表单时,
JSF处理提交请求。生命周期处理初始请求时,只执行
Restore
View和
Render Response两个阶段因为这个请求中用户没有输入数据,相反地,生命周期处理提交请求时,会执行所有的阶段。
tobe continue
分享到:
相关推荐
其中,JSF的生命周期管理机制是其核心特性之一,它包括了一系列有序的阶段,每个阶段都可能触发不同的事件,这些事件需要被正确地处理。 #### 一、JSF生命周期概述 在深入了解JSF中的事件处理之前,我们先简要回顾...
它通过事件驱动模型处理用户交互,并且有强大的生命周期管理。 2. **组件库**:JSF包含一系列可重用的UI组件,如按钮、输入字段、表格等,这些组件可以方便地在页面上进行布局和组合。例如,`h:inputText`用于创建...
JSF生命周期是理解其工作原理的关键,它包括六个主要阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用逻辑和渲染响应。在这些阶段中,每个阶段都有特定的任务,确保用户输入被正确处理并更新到服务器端...
总的来说,JSF生命周期提供了一种有序的方式来处理Web应用程序的用户交互,简化了开发流程,同时也提供了强大的功能和灵活性。开发者可以根据需求利用JSF的生命周期特性,优化应用程序的性能和用户体验。
此外,还可能涉及JSF的生命周期,包括初始化、渲染和更新等阶段。 "第3章.pdf"通常会深入到JSF组件库。JSF提供了一系列内置的UI组件,如文本输入框、按钮、表单等,这些组件可以直接在Facelets模板中使用。本章可能...
1. **JSF生命周期**:JSF有六个主要阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用应用业务逻辑以及渲染响应。开发者可以在这些阶段插入自定义行为。 2. **JSF页面(Facelets)**:JSF使用Facelets...
每个JSF页面都是由多个组件组成的,这些组件可以独立配置和重用。例如,可以在多个地方使用同一个成绩展示组件,只需改变组件的数据源即可。 **5. 视图和导航** 在成绩管理系统中,视图和导航是关键。JSF支持基于...
例如,一个简单的JSF页面可能包含一个输入字段和一个按钮: ```html <!DOCTYPE html> xmlns:h="http://xmlns.jcp.org/jsf/html"> <title>JSF示例 提交" action="#{bean.submit}" /> ``` 这里,`h:...
8. **生命周期**:JSF组件有一个明确的生命周期,包括初始化、处理请求、应用请求值、更新模型值、验证、调用应用事件和渲染响应等阶段。理解这个生命周期对于调试和优化JSF应用程序至关重要。 通过这个基础的JSF...
JSF的每个请求都经历一个预定义的“请求处理生命周期”,分为若干阶段,包括初始化、应用请求值、过程验证、更新模型值、调用应用、呈现响应等。这个生命周期根据不同的请求类型有不同的执行路径,例如: 1. **非...
5. **JSF生命周期**: JSF有六步生命周期,包括初始化、应用请求值、处理验证、更新模型值、调用应用事件和渲染响应。理解这个生命周期对于优化性能和处理错误至关重要。 6. **转换和验证**: 在学生管理系统中,可能...
JSF的核心概念包括组件、事件、生命周期和渲染。组件是UI的基本构建块,如按钮、文本输入等,它们通过JSF的XML配置文件( faces-config.xml)或注解进行定义和连接。事件处理机制允许组件之间进行通信,而JSF的四个...
JSF 的生命周期管理是理解其工作原理的关键所在。JSF 2.2的生命周期主要包括以下几个阶段: 1. **恢复视图(View Restore)**:在这个阶段,JSF会从客户端请求中恢复出视图树。如果视图尚未创建,则会从视图声明语言...
这可能包括如何设置JSF和Spring的集成环境,创建JSF页面并与Spring服务交互,以及如何处理酒店预定的业务逻辑。文件可能包含源代码示例、配置文件和解释性的文本,帮助读者理解系统的具体实现。 总之,JSF和Spring...
总之,JSF的事件处理机制提供了灵活的方式来响应用户操作,同时结合生命周期管理,确保了应用程序能够正确地处理输入、验证数据、更新模型并呈现响应。理解和掌握这些概念对于开发健壮的JSF应用程序至关重要。通过...
5. **生命周期**:JSF有七个阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用应用、渲染响应和结束请求。在这些阶段中,开发者可以插入自定义逻辑。 第13章的“源码”可能包含示例应用的代码,这将帮助...
JSF的核心在于其生命周期,包括六种不同的阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用和渲染响应。通过JSF,开发者可以将业务逻辑与视图层分离,简化开发过程。 **Hibernate** Hibernate是一个...
每个组件都有自己的生命周期,包括初始化、渲染等阶段。JSF通过Model-View-Controller(MVC)架构来组织应用程序,简化了前后端交互,使得开发者能够专注于业务逻辑而无需过多关注底层细节。 **2. IBM的JSF实现** ...
它们是Java类,可以通过JSF生命周期进行管理,提供了在视图和控制层之间传递数据的方法。在学生管理系统中,会有一个或多个Managed Beans来处理学生信息的增删改查操作。 4. **转换与验证**: JSF提供了内置的转换器...