JSF Life Cycle:java

1)恢复视图
视图表示组成特定页面的全部组件。它被保存在客户端(一般存储在隐藏字段中)或服务器中(一般在会话中)。根据请求访问的视图ID(页面地址),重建JSF 组件DOM树。若是JSF页面是第一次访问,也便是视图ID在内存中没没有存根,那么JSF会在内存中构建JSF组件的DOM树。恢复视图也确保了组件的值,与树中的组件相关联的事件监听器、验证器或者转换器,都被恢复。
2)应用请求值
JSF组件获取请求中的属于本身的值,包括Local值,和submit值.同时处理转换,转换成功,更新local值(submit转换结果),固然过程没有那么简单,JSF处理器有本身的一套解码过程。
3) 执行验证
在处理验证阶段,JSF遍历组件树并检查每一个组件,看是否每一个组件的被提交值均可以接受。验证发生前,被提交值将首先由注册到该组件的转换器或者默认转换器进行转换。而后验证直接由组件进行或者委托给一个或者多个其余验证器来进行。若是用户的输入无效就会向FacesContext中增长一个错误消息,而且该组件会被表示为无效,而后转到响应阶段,显示当前视图,表示错误信息。
4)更新模型值:若是全部的组件本地值转换验证等均成功,此时JSF就会根据EL处理关联的bean,并更新bean绑定值.在此处JSF会根据EL绑定加载配置的后台bean。
5)调用应用:调用注册的侦听器,而后执行事件驱动,获取下一个视图。侦听器此时能够有效的侦听到UI组件的各项数据,事件驱动部分即action能够有效的获取被更新的后台bean数据。执行本身的业务逻辑。
6)呈现响应
到此请求处理结束,根据导航规则,呈现响应的页面.依次执行…
JavaServer Faces Standard Request-Response Lifecycle: 浏览器

JavaServer Faces规范定义了JavaServer Faces应用程序的生命周期。有关今生命周期的更多信息,请参见JavaServer Faces应用程序的生命周期。下面的步骤描述了应用于基于facelet的应用程序的过程。
1)当客户端(例如浏览器)向使用Facelets建立的页面发出新的请求时,将建立新的组件树或javax.faces.component.UIViewRoot,并将其放置在FacesContext中。
2)UIViewRoot应用于Facelets,视图中填充了用于呈现的组件。
3)新构建的视图做为对客户机的响应返回。
4)在呈现时,此视图的状态存储为下一个请求。存储输入组件和表单数据的状态。
5)客户端能够与视图交互,并从JavaServer Faces应用程序请求另外一个视图或更改。此时,保存的视图从存储状态恢复。
6)恢复的视图再一次经过JavaServer Faces生命周期,它最终将生成一个新的视图,或者从新呈现当前视图,若是没有验证问题,而且没有触发操做。
7)若是请求相同的视图,则再次呈现存储视图。
8)若是请求新视图,则继续执行步骤2中描述的流程。
9)而后将新视图做为对客户机的响应返回。服务器