zoukankan      html  css  js  c++  java
  • JSF生命周期学习

    JSF页面的生命周期与JSP页面的生命周期相类似:客户相页面发出HTTP请求,服务器返回翻译成HTML的响应,但JSF提供了更多处理页面的服务。生命周期与页面编写者无关,这个概念主要面对开发人员。


    1. 重建视图阶段(Restore View Phase)
    当请求JSF页面时,如点击按钮或链接,JSF开始重建视图阶段。
    在 这个阶段JSF建立页面的视图,给视图中的组件设置事件处理器、校验器,在FacesContext中保存视图。FacesContext含有所有处理请 求的信息,所以页面元素包括组件标签、事件处理器、转换器、校验器都要接触FacesContext。如果请求是第一次的请求,JSF在这个阶段产生一个 空的视图,生命周期进入显示应答阶段,这个空的视图会在页面返回的时候用到。如果请求是返回的请求,对应于这个页面的视图已经存在,JSF用存在客户端或 服务器端的信息重建视图。
    2. 应用视图值阶段(Apply Request Values Phase)
    在组件树重建后,每一个树上的组件用decode方法从请求中解出其新的值,这个值保存在组件中。如果值数据转换失败,产生与此组件相联系的错误,并入FacesContext的上下文,错误信息在其后的显示应答阶段显示。
    如果任何decode方法或事件监听器调用了当前FacesContext的renderResponse方法,则JSF直接跳到显示应答阶段。如果在这个阶段有事件产生,JSF广播事件到感兴趣的监听器。
    如果此时应用转到另一个web应用或应答不含有JSF组件,则调用FacesContext.renderComplete方法。在此阶段结束时,所有组件已得到新值,错误信息和事件已入队列。
    3. 处理校验阶段(Process Validations Phase)
    此阶段,JSF处理所有组件树上注册的校验器,检查设置了校验的组件属性,如果值不合法JSF在上下文(FacesContext)中加入错误信息,生命周期直接进入显示应答阶段,显示错误信息,如果有转换错误也会显示。
    如果任何validate方法或事件监听器调用上下文的renderResponse方法,JSF直接跳到显示应答阶段。
    4. 更新模型值阶段(Update Model Values Phase)
    在JSF确定数据合法之后,遍历组件树,从组件中取得相应值设置到服务器对象上。
    如果任何updateModels或监听器调用renderResponse方法,JSF直接跳到显示应答阶段。
    5. 调用应用阶段(Invoke Application Phase)
    此阶段,JSF除了应用级别事件,如:表格提交或到其它页面的链接等;重建视图时产生的事件广播到感兴趣的监听器上,JSF计算应答到新的页面。
    6. 显示应答阶段(Render Response Phase)
    此阶段,如果应用是JSP页面,JSF将控制转到JSP容器。
    如果是第一次请求,执行JSP页面是会把页面上显示的组件加到组件树中。当JSP容器遍历页面的标签时组件会将自己显示出来。如果是返回的请求且在其它阶段产生了错误,则显示原始页面并显示错误信息。

  • 相关阅读:
    如何用PostMan
    LINQ笔记-LINQ操作DataTable
    EF Core利用Transaction对数据进行回滚保护
    php 替换模板中的 PHP源码标签字符方法
    php读取文件使用redis的pipeline(管道)导入大批量数据
    Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程
    php 版本升高后 会出现 之Deprecated: Function ereg_replace() is deprecated的解决方法
    IIS + FastCGI+php(从5.2升级到5.3)
    Nginx 出现 _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/
    nginx 环境不支持thinkPHP
  • 原文地址:https://www.cnblogs.com/luckyflower/p/3938419.html
Copyright © 2011-2022 走看看