Lifecycle of JSF and Facelets(第6周)

一:JSF生命周期

  JSF是基于事件驱动。JSF生命周期分为两个主要阶段:执行阶段和渲染阶段。

  具体可分为:

1 重建视图: 建立组件树,如果是首次渲染,则组件树被重置合适的状态;如果是首次渲染,则组件树被创建跳到响应阶段(JSF的组件树结构和DOM是一样的,只不过一个是client一个是server)。

2 应用请求值: 树中的每个组件都能从请求参数中提取的新的值,并把值存储本地.为之后的处理所有与组件相关的事件进入队列,如果某个组件的immediate属性设置为true,那么验证,转换,以及与组件关联的事件在这个阶段被处理(注意:并不是不处理).

3 处理验证: 组件值转换成与之相对应的数据类型。如果转换失败,这一阶段将继续完成所有剩余的转换器,验证和运行所需的检查,但在完成后,跳转到生命周期的Render Response阶段。

如果验证成功,则检查组件上的required 的属性。如果该属性是必须的并且组件中输入了值,那么与之相关的验证程序运行。如果required的属性是必须但又没有输入值,这一阶段完成(所有剩余验证程序还会继续执行),然后生命周期跳跃到Render Response阶段。如果required 属性标识为false,不管组件中有没有输入值,验证过程都不会运行。

在此阶段的末尾,组件的值会被重置为converted后的值,任何的validation或者conversion的错误信息及事件在FaceContext实例中排队,值修改事件开始触发。

验证顺序:converter->required->validator

总而言之,对于一个可以编辑的input组件,在Process Validations阶段遵循以下几个环节:
   a:如果converter失败,required检查和validators都不会执行
   b:如果converter成功,但是required检查失败validators不会执行
   c:如果converter和required都成功,所有的validators都会执行,在多个validators不管哪个validator失败了其余的validator都会继续执行,理由就是开发人员需要知道尽量多的 错  误提示来修改错误。

4 更新模型: 验证组件的本地值移动到模型中,同时本地副本被丢弃。

5 调用应用程序: 执行应用级逻辑(如事件处理程序。

6 呈现响应: 呈现树中的组件。后续请求和Restore View阶段保存状态信息。

二:Facelets

1.Facelets是用来建立JSF应用程序时的一个可供选择的表现层技术。提供了一个强有力的模板化系统,让你使用HTML样式的模板来定义JSF的表现层,减少了组件整合进表现层时候冗余的代码,而不需要一个web容器。

2.优点

  使用 Facelets 的好处:即组件复合和模板框架,它的核心 是组件,而不是 Servlets 输出。但是采用 Facelets 也有些不足。其中之一就是,对 Facelets 的 IDE 支持极少。

  使用 Facelets API 非常自然和直观。

  如果要使用新的 JSF 组件库,必须有公开这个库的 Facelets 标记库。

摘自:https://www.yiibai.com/jsf/jsf-life-cycle.html

   https://www.cnblogs.com/Blog-Of-ZhouLinHu/p/8854904.html

   https://blog.csdn.net/amwiacel/article/details/14451617

原文地址:https://www.cnblogs.com/MapleDream/p/9246355.html

时间: 2024-11-14 23:52:11

Lifecycle of JSF and Facelets(第6周)的相关文章

jsf和facelets的生命周期

一.JSF生命周期 JSF是基于事件驱动.JSF生命周期分为两个主要阶段:执行阶段和渲染阶段. 1.执行阶段 分为六个阶段: 恢复视图阶段 当客户端请求一个JavaServer Faces页面时,JavaServer Faces实现开始恢复视图阶段. 在此阶段,JSF将视图中的组件构建为请求页面,线性事件处理程序和验证器的视图,并将视图保存在FacesContext实例中.如果对该页面的请求是回发,那么与该页面相对应的视图已经存在于FacesContext实例中. 在此阶段,JavaServer

javaEE 之 JSF与Facelets

JSF:一种构建java web的标准框架 JSF的生命周期分为运行阶段和渲染阶段两个主要的阶段 运行阶段: 当第一次请求时,构建或恢复应用程序视图.对于其他后续请求,执行其他操作,执行阶段被划分成以下子阶段: 1.恢复视图阶段 2.应用请求值阶段 3.流程验证阶段 4.更新模型值阶段 5.调用应用阶段 6.渲染响应阶段 各个阶段的详细说明如下: 渲染阶段: 在此阶段,请求的视图作为客服端浏览器的响应.视图渲染是以HTML或XHTML生成输出的过程. 在渲染过程中采取以下步骤: 1.当客服端对I

JSF中使用f:ajax标签无刷新页面改变数据

ajax本是用在前端的一种异步请求数据的操作,广泛用于js中,一般的js框架如jq都有被封装好的方法,用于发起异步请求操作.异步操作可以增强用户体验和操作,越来越多的程序都在使用ajax.JSF的facelets内置了一个ajax标签,可用于简单的ajax操作. f:ajax 有几个常用属性,分别是:event.listener.render. 1.event:event 对应一个js事件名,该事件名省略了开头的”on“字符,例如点击事件是onclick,那么只需要填入click即可.类似事件还

[it-ebooks]电子书列表

#### it-ebooks电子书质量不错,但搜索功能不是很好 #### 格式说明  [ ]中为年份      ||  前后是标题和副标题  #### [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Objective-C to develop iPhone games http://it-ebooks.info/book/3544/ Learning Web App Developmen

(转) [it-ebooks]电子书列表

[it-ebooks]电子书列表 [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Objective-C to develop iPhone games http://it-ebooks.info/book/3544/Learning Web App Development || Build Quickly with Proven JavaScript Techniques http://

JBoss Seam 2.3.1新功能

jboss seam reference 2.3(第4章) jboss seam reference 2.3 Final    24.09.2012   第四章 从2.2迁移到2.3 在你开始Seam 2.3以前,有一些事情你应该注意.这个过程应该不是太痛苦--如果被卡住了,只是回来参考在Seam分发版中的更新Seam例子即可. 这个迁移指南假设你正在使用Seam2.2,如果你正从Seam 1.2 或 2.0迁移,请看jboss-seam-x.y.z.Final/seam2migration.t

[1]工欲善其事必先利其器-------UML的使用(一)

目录 什么是UML 为什么要使用UML UML基本模型图的介绍 现有哪些比较流行的UML工具 1.什么是UML: UML:Unified Modeling Language (UML)又称统一建模语言.为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置.UML是80年代末至90年代面向对象的设计与实现方法发展高潮的产物.它的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域.其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统.UML是

十二个UML工具

1. StarUML StarUML是一个开源UML项目,可以开发快速,灵活,可扩展,多功能并且免费的UML/MDA平台.此项目运行在Win32平台之上.StarUML项目的目标是成为Rational Rose.Together等商业UML工具的替代者. 2. Netbeans UML Plugin NetBeans UML插件目前支持以下UML图:活动图,类图,序列图,状态图,以及用例图.你可以在图编辑器中排列图,拖曳图案和类等等. 3. Acceleo Acceleo是一个代码生成器,可以将

开源UML工具推荐

1.StarUML StarUML是一个开源UML项目,可以开发快速,灵活,可扩展,多功能并且免费的UML/MDA平台.此项目运行在Win32平台之上.StarUML项目的目标是成为RationalRose.Together等商业UML工具的替代者. 2.NetbeansUMLPlugin NetBeansUML插件目前支持以下UML图:活动图,类图,序列图,状态图,以及用例图.你可以在图编辑器中排列图,拖曳图案和类等等. 3.Acceleo Acceleo是一个代码生成器,可以将模型转换成代码