1、恢复视图
:恢复用户所请求的视图的状态,状态的信息可能来自request也可能存在于服务器端,如果没有视图状态, 则予以重建。 倘若先前曾经调用过saveState()方法来存储状态信息,则必须在此阶段调用组件的restoreState()方法。
2、应用请求值:
在本阶段,UIVIewRoot组件的processDecodes()方法会被调用,该方法再递归调用组件树里任何rendered属性为true的组件的同名方法,个别组件在该方法里面会调用组件自己或者所搭配的renderer的decode()方法;对于输入组件而言,其decode()方法的作用是 设定组件的submittedValue属性,若输入组件的immediate属性为true,则调用validate()方法来转换、验证提交值,若转换后的值不同于前一次的值,则validate()方法会添加一个ValueChangeEvent事件到队列中。
若发现提交的值不正确,则添加一个错误信息到队列,并调用FacesContext的renderResponse()方法。
对于命令组件而言,如果request恰好是自己触发的,则其decode()方法会添加一个ActionEvent事件到队列。
在本阶段的最后,所有被标示为需要处理的事件(不管发生于哪一个阶段),其来源组件的broadcast()会被调用一次,借此通知它们的event handler。收到通知的event handler有可能会选择另一个视图,也可能自己产生响应视图。若是前者,它们会调用FacesContext的renderResponse()方法,对于后者,它们会调用FacesContext的responseComplete()方法,改方法会结束request处理过程。
3、处理验证:
在本阶段,UIViewRoot组件的processValidators()方法会被调用,该方法会递归调用组件树里任何rendered属性为true的组件的同名方法。
对于输入组件而言,其processValidators()方法会调用组件自己的validate()方法,当该方法发现验证过的值不同于前一次的值,则会添加一个ValueChangeEvent事件到队列中。
若发现提交的值不正确,则添加一个错误信息到队列,并调用FacesContext的renderResponse()方法。
在本阶段的最后,所有被标示为需要处理的事件(不管发生于哪一个阶段),其来源组件的broadcast()会被调用一次,借此通知它们的event handler。收到通知的event handler有可能会选择另一个视图,也可能自己产生响应视图。若是前者,它们会调用FacesContext的renderResponse()方法,对于后者,它们会调用FacesContext的responseComplete()方法,改方法会结束request处理过程。
4、更新模型值:
在本阶段,UIViewRoot组件的processUpdatess()方法会被调用,该方法会递归调用组件树里任何rendered属性为true的组件的同名方法。
对于输入组件而言,它们的processUpdates()方法会调用组件自己的updateModel()方法,借此将组件的local value设定给组件所绑定的应用程序对象的属性,如果不能设定模型属性,则会添加一个错误信息到队列,并调用FacesContext的renderResponse()方法。
在本阶段的最后,所有被标示为需要处理的事件(不管发生于哪一个阶段),其来源组件的broadcast()会被调用一次,借此通知它们的event handler。收到通知的event handler有可能会选择另一个视图,也可能自己产生响应视图。若是前者,它们会调用FacesContext的renderResponse()方法,对于后者,它们会调用FacesContext的responseComplete()方法,改方法会结束request处理过程。
5、 触发后台程序:
UIViewRoot组件的processApplication()方法会被调用,该方法会检查每个标示为需要处理的事件(不管发生于哪一个阶段), 其来源组件的broadcast()会被调用一次,借此通知它们的event handler。收到通知的event handler有可能会选择另一个视图,也可能自己产生响应视图。若是前者,它们会调用FacesContext的renderResponse()方法,对于后者,它们会调用FacesContext的responseComplete()方法,改方法会结束request处理过程。
6、 绘制响应视图:
组件的saveState()方法有可能在此阶段被调用,而整个组件树的完整状态也有可能被包含于response中(HTML隐藏字段)或者session中。
分享到:
相关推荐
在JSF应用程序开发中,理解这些生命周期阶段至关重要,因为它可以帮助开发者正确地组织和安排他们的代码,确保在正确的时间执行正确的操作。例如,验证应该在处理请求值之后立即进行,而业务逻辑应在更新模型值之后...
在JSF中,客户端发送的请求和服务器端的处理遵循一个特定的生命周期流程,这个流程对于理解JSF应用程序的行为至关重要。 JSF生命周期分为五个主要阶段,每个阶段都有其特定的任务和目的: 1. **恢复视图**...
3. **性能优化**:由于JSF生命周期中涉及多个阶段的操作,因此可能会对应用的性能造成一定影响。为了提高性能,开发者可以采用诸如异步加载视图、减少不必要的验证操作等策略。 #### 四、总结 JSF生命周期中的事件...
2. **应用请求值(Apply Request Values)**:此阶段的主要任务是从客户端请求中获取表单数据,并将其绑定到组件模型中。 3. **处理验证(Process Validations)**:在这个阶段,JSF会执行所有的验证逻辑,确保用户输入...
`FacesContext`是JSF的核心对象,它在JSF生命周期中存储了所有请求相关的上下文信息。Managed Beans是JSF中的业务逻辑容器,用于封装和管理应用程序的状态。通过注解(如`@ManagedBean`和`@RequestScoped`)可以方便...
在IBM的JSF学习资料中,可能会有详细的生命周期示例,帮助开发者了解何时执行特定操作。 **5. 表单处理和验证** JSF提供了内置的表单处理和验证机制。开发者可以定义自定义的验证规则,确保用户输入的数据符合业务...
- **控制器(Controller)**:JSF生命周期处理用户请求,执行验证、更新模型和调用业务逻辑。 ### JSF模型 JSF模型是应用程序的数据层,由管理Bean(Managed Beans)组成,它们是Java类,包含了应用程序的业务逻辑...
JSF生命周期包括六步:恢复视图、应用请求值、处理验证、更新模型值、调用应用程序和渲染响应。 2. **JSF组件**:JSF的核心是其组件库,这些组件可以直接在页面上使用,如输入字段、按钮、表格等。每个组件都有自己...
2. **生命周期**:JSF具有请求处理的生命周期,包括恢复视图、应用请求值、处理事件、更新模型值、渲染响应等阶段。开发者可以在这个过程中插入自定义逻辑。 3. **表达式语言(EL)**:JSF使用EL来绑定UI组件的属性...
在JSF 1.2中,可以使用注解(如`@ManagedBean`和`@RequestScoped`)来声明和管理Bean的生命周期,使得Bean的配置更加简洁。 ### 5. 验证与转换 JSF 1.2内置了验证和转换机制。通过定义Validator接口的实现,开发者...
通过注解如`@ManagedBean`和`@SessionScoped`、`@RequestScoped`等,我们可以定义bean的范围和生命周期。 5. Facelets: Facelets是JSF的标准视图定义语言,用于创建和组合UI组件。它使用XML语法,允许开发者定义...
在JSF 1.2中,可以通过在bean类上定义注解来配置bean的范围(如request、session或application级别)和生命周期。 **视图状态管理** 是JSF的重要特性,它负责跟踪组件的状态。在JSF 1.2中,视图状态可以存储在...
JSF提供了组件化、MVC(模型-视图-控制器)架构,以及丰富的生命周期管理,使得开发者能够更高效地处理用户交互和数据管理。 在配置JSF框架时,首先要在`web.xml`文件中声明Faces Servlet,这是JSF处理HTTP请求的...
JSF应用遵循一套预定义的生命周期,包括六步:恢复视图、应用请求值、处理验证、更新模型值、调用后处理方法和呈现响应。JSF API允许开发者在每个阶段插入自定义的行为,如在验证失败时处理错误或在模型更新后执行...
`request`作用域的Bean仅在HTTP请求生命周期内存在,`session`作用域的Bean在用户会话期间有效,`application`作用域的Bean在整个应用程序生命周期内都有效。此外,`none`作用域表示Bean在需要时动态创建。 在JSF...
2. **生命周期**:JSF应用有四个主要阶段:恢复视图、应用请求值、处理验证和更新模型值、调用应用逻辑。在这些阶段中,JSF处理用户的输入、验证数据、更新模型,并调用后端业务逻辑。 3. **FacesContext**:JSF...
3. **Managed Beans**:JSF中的Managed Beans是用于存储和管理业务逻辑的对象,可以通过注解(@ManagedBean, @SessionScoped, @RequestScoped等)来定义其生命周期和范围。 4. **EL(Expression Language)**:JSF...
- **生命周期**:JSF应用有一个明确的生命周期,包括初始化、恢复视图、应用请求值、处理事件、更新模型值、验证、应用业务逻辑和渲染响应等阶段。 - **视图和模型**:JSF采用了MVC(Model-View-Controller)设计...