1.JSF生命周期

1)恢复视图(Restore View)

视图表示组成特定页面的所有组件。它被保存在 客户端(通常存储在隐藏字段中)或服务器中(通常在会话中)。根据请求访问的视图ID(页面地址),重建JSF 组件DOM树。如果JSF页面是第一次访问,也即是视图ID在内存中没没有存根,那么JSF会在内存中构建JSF组件的DOM树。恢复视图也确保了组件的值,与树中的组件相关联的事件监听器、验证器或者转换器,都被恢复。

2)应用请求值(Apply Request Values)

JSF组件获取请求中的属于自己的值,包括Local值,和submit值.同时处理转换,转换成功,更新local值(submit转换结果),当然过程没有那么简单,JSF处理器有自己的一套解码过程。

3) 执行验证

在处理验证阶段,JSF遍历组件树并检查每个组件,看是否每个组件的被提交值都可以接受。验证发生前,被提交值将首先由注册到该组件的 转换器或者默认转换器进行转换。然后验证直接由组件进行或者委托给一个或者多个其他验证器来进行。如果用户的输入无效就会向FacesContext中增加一个错误消息,并且该组件会被表示为无效,然后转到响应阶段,显示当前视图,表示 错误信息。

4)更新模型值:如果所有的组件本地值转换验证等均成功,此时JSF就会根据EL处理关联的bean,并更新bean绑定值.在此处JSF会根据EL绑定加载配置的后台bean。

5)调用应用:调用注册的侦听器,然后执行 事件驱动,获取下一个视图。侦听器此时可以有效的侦听到UI组件的各项数据, 事件驱动部分即action可以有效的获取被更新的后台bean数据。执行自己的业务逻辑。

6)渲染响应(Render Response)

到此请求处理结束,根据导航规则,渲染响应的页面,依次执行。

2.Facelets生命周期

JSF规范定义了JavaServer Faces应用程序的生命周期。以下步骤为基于 Facelets 的应用程序的过程描述。

  1. 生命周期是在客户端使用Facelets创建的网页发出新请求时启动。 JSF创建一个新的组件树或javax.faces.component.UIViewRoot并放入FacesContex

  2. 如果可用的UIViewRoot应用于Facelets, 视图可以填充组件进行渲染。

  3. 新建的视图作为对客户端的响应而被渲染。

  4. 在渲染时,存储此视图的状态用于下一个请求。 存储输入组件和表单数据的状态。

  5. 客户端可以与视图交互,并从JSF应用程序请求另一个视图。 此时,保存的视图从存储状态恢复。

  6. 恢复视图再次通过JSF生命周期,如果没有验证问题,并且没有触发任何操作,最终将生成新视图或重新呈现当前视图。

  7. 如果请求相同的视图,则再次呈现存储的视图。

  8. 如果要求新视图,则继续执行步骤2

  9. 将新视图作为对客户端的响应。

转载于:https://www.cnblogs.com/XGQXGQ/p/8919030.html

JSF和Facelets的lifecircle相关推荐

  1. 比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket

    2009-06-23 Java Web层框架--JSF.Spring MVC.Stripes.Struts 2.Tapestry和Wicket他们各自的优点和缺点: JSF 优点: ◆Java EE标 ...

  2. Building Seam 2.0 Application with NetBeans 6.1

    Building Seam 2.0 Application with NetBeans 6.1 转载请保留作者信息: Author: 88250 Blog: http:/blog.csdn.net/D ...

  3. JAVA开源项目[转]

    Spring Framework  [Java开源 J2EE框架] Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编 ...

  4. eclipse ganymede下安装Jbosstools

    JBossTools对于开发JSF(尤其是richfaces+faceltes)的应用系统有非常好的辅助作用,可以方便开发(页面预览功能),在eclipse3.3中,一直使用Jbosstools,以便 ...

  5. Java Web层框架比较

    作者: IT168 戚祥  2007-07-13 -- 比较JSF.Spring MVC.Stripes.Struts 2.Tapestry和Wicket [译者按]这是Matt Raible在今年6 ...

  6. JSF, MyFaces, RichFaces 和 Facelets的区别

    初学JavaEE时很多东西都没理解,只是一股脑地往大脑里灌,现在是到明确一下的时候了. JSF(JavaServer Faces) JSF是一套用于构造基于组件的Web应用的界面的规范. 需要着重强调 ...

  7. 《Java EE 7精粹》—— 第3章 JSF 3.1 Facelets

    本节书摘来异步社区<Java EE 7精粹>一书中的第2章,第2.1节,作者:[美]Arun Gupta,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第3章 ...

  8. JAVA EE 6 jar包集合_Java EE6将JSF facelets(xhtml)和ManagedBeans打包成JAR

    是的,这绝对是可能的,假设你使用JSF 2.0,Java EE 6的一部分. 对于受管Bean和其他JSF类(如验证器,转换器等),只需使用@ManagedBean,@FacesValidator,@ ...

  9. 使用Facelets开发JSF程序

    http://ajava.org/course/open/11826.html 转载于:https://www.cnblogs.com/huanghaiyu/archive/2010/11/16/18 ...

最新文章

  1. android 游戏引擎libgdx demo cuboc分析
  2. 任正非:管理就要铲除公司夹心层!
  3. 数据库表设计、 数据库分层、myslq水平拆分、oracle表分区
  4. Redis布隆过滤器
  5. mysql数据库连接时区设置_springboot 连接数据库之时区设置
  6. 人脸识别(3)---静态人脸识别和动态人脸识别的区别
  7. 第三章——空间域处理方法
  8. Git管理工具SourceTree文件预览乱码问题
  9. 了解一下DDD领域驱动设计
  10. MATLAB入门学习笔记8
  11. python下载电影天堂_python电影天堂
  12. 拼多多爆款选择要分析哪些数据?如何采集这些爆款到拼多多?
  13. 微信无法直接打开淘宝链接是怎么回事?
  14. 请教统计对应表字段为空的字段数
  15. 外设驱动调试经验汇总--每天加一点
  16. Using mysqldump for backups
  17. c++11 unkown总结
  18. 关注视聊效果!中星微摄像头对比测试
  19. 一篇文章告诉你如何拍摄720度全景图片
  20. 前言-阅读建议和说明

热门文章

  1. angular linux 打包不成功_Angular Library 系列之 构建和打包
  2. div固定大小文字溢出自动缩小_Figma 教程 | 文字工具
  3. python解析html xml最好的模块_python中处理xml的模块哪个好?
  4. Java从零基础到精通教程全套视频课程
  5. coco showanns不显示_coco奶茶加盟好不好?【5月官网最新公布】加盟费用+加盟流程...
  6. Java工作笔记-判断文件是否被正在被写入
  7. Qt笔记-获取Windows下目前运行的进程信息
  8. Qt|OpenGL对obj文件的认识以及如何去解析(opengl+qt构造地球模型)
  9. Qt工作笔记-QTreeWidgetItem中的CheckState以及遍历选中的CheckBox
  10. C/C++对象的序列化