`
jokeymzx
  • 浏览: 51727 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSF中request请求的生命周期

阅读更多

 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 应用程序的生命周期.rar

    在JSF应用程序开发中,理解这些生命周期阶段至关重要,因为它可以帮助开发者正确地组织和安排他们的代码,确保在正确的时间执行正确的操作。例如,验证应该在处理请求值之后立即进行,而业务逻辑应在更新模型值之后...

    JSF生命周期及组件开发

    在JSF中,客户端发送的请求和服务器端的处理遵循一个特定的生命周期流程,这个流程对于理解JSF应用程序的行为至关重要。 JSF生命周期分为五个主要阶段,每个阶段都有其特定的任务和目的: 1. **恢复视图**...

    JSF生命周期的事件处理

    3. **性能优化**:由于JSF生命周期中涉及多个阶段的操作,因此可能会对应用的性能造成一定影响。为了提高性能,开发者可以采用诸如异步加载视图、减少不必要的验证操作等策略。 #### 四、总结 JSF生命周期中的事件...

    jsf的必读教科书

    2. **应用请求值(Apply Request Values)**:此阶段的主要任务是从客户端请求中获取表单数据,并将其绑定到组件模型中。 3. **处理验证(Process Validations)**:在这个阶段,JSF会执行所有的验证逻辑,确保用户输入...

    《JSF入门》培训教程PPT

    `FacesContext`是JSF的核心对象,它在JSF生命周期中存储了所有请求相关的上下文信息。Managed Beans是JSF中的业务逻辑容器,用于封装和管理应用程序的状态。通过注解(如`@ManagedBean`和`@RequestScoped`)可以方便...

    IBM JSF学习资料

    在IBM的JSF学习资料中,可能会有详细的生命周期示例,帮助开发者了解何时执行特定操作。 **5. 表单处理和验证** JSF提供了内置的表单处理和验证机制。开发者可以定义自定义的验证规则,确保用户输入的数据符合业务...

    JSF的工作方式 JSF架构 JSF模型 JSF事件类型

    - **控制器(Controller)**:JSF生命周期处理用户请求,执行验证、更新模型和调用业务逻辑。 ### JSF模型 JSF模型是应用程序的数据层,由管理Bean(Managed Beans)组成,它们是Java类,包含了应用程序的业务逻辑...

    JSF实例源代码下载

    JSF生命周期包括六步:恢复视图、应用请求值、处理验证、更新模型值、调用应用程序和渲染响应。 2. **JSF组件**:JSF的核心是其组件库,这些组件可以直接在页面上使用,如输入字段、按钮、表格等。每个组件都有自己...

    jsf一个比较全的程序

    2. **生命周期**:JSF具有请求处理的生命周期,包括恢复视图、应用请求值、处理事件、更新模型值、渲染响应等阶段。开发者可以在这个过程中插入自定义逻辑。 3. **表达式语言(EL)**:JSF使用EL来绑定UI组件的属性...

    core jsf 1.2 jsf 核心

    在JSF 1.2中,可以使用注解(如`@ManagedBean`和`@RequestScoped`)来声明和管理Bean的生命周期,使得Bean的配置更加简洁。 ### 5. 验证与转换 JSF 1.2内置了验证和转换机制。通过定义Validator接口的实现,开发者...

    JSF 很全面的帮助文档

    通过注解如`@ManagedBean`和`@SessionScoped`、`@RequestScoped`等,我们可以定义bean的范围和生命周期。 5. Facelets: Facelets是JSF的标准视图定义语言,用于创建和组合UI组件。它使用XML语法,允许开发者定义...

    jsf-api-1.2

    在JSF 1.2中,可以通过在bean类上定义注解来配置bean的范围(如request、session或application级别)和生命周期。 **视图状态管理** 是JSF的重要特性,它负责跟踪组件的状态。在JSF 1.2中,视图状态可以存储在...

    JSF框架学习资

    JSF提供了组件化、MVC(模型-视图-控制器)架构,以及丰富的生命周期管理,使得开发者能够更高效地处理用户交互和数据管理。 在配置JSF框架时,首先要在`web.xml`文件中声明Faces Servlet,这是JSF处理HTTP请求的...

    JSF API

    JSF应用遵循一套预定义的生命周期,包括六步:恢复视图、应用请求值、处理验证、更新模型值、调用后处理方法和呈现响应。JSF API允许开发者在每个阶段插入自定义的行为,如在验证失败时处理错误或在模型更新后执行...

    JSF技术总结文档.doc

    `request`作用域的Bean仅在HTTP请求生命周期内存在,`session`作用域的Bean在用户会话期间有效,`application`作用域的Bean在整个应用程序生命周期内都有效。此外,`none`作用域表示Bean在需要时动态创建。 在JSF...

    JSF1.2的jar包

    2. **生命周期**:JSF应用有四个主要阶段:恢复视图、应用请求值、处理验证和更新模型值、调用应用逻辑。在这些阶段中,JSF处理用户的输入、验证数据、更新模型,并调用后端业务逻辑。 3. **FacesContext**:JSF...

    JSF例子,jsf开始实例。

    3. **Managed Beans**:JSF中的Managed Beans是用于存储和管理业务逻辑的对象,可以通过注解(@ManagedBean, @SessionScoped, @RequestScoped等)来定义其生命周期和范围。 4. **EL(Expression Language)**:JSF...

    JSF简单入门例子

    - **生命周期**:JSF应用有一个明确的生命周期,包括初始化、恢复视图、应用请求值、处理事件、更新模型值、验证、应用业务逻辑和渲染响应等阶段。 - **视图和模型**:JSF采用了MVC(Model-View-Controller)设计...

Global site tag (gtag.js) - Google Analytics