和JSF生命周期相关的请求与响应有两类:分别是Faces response和Non-Faces response,以及Faces request和Non-Faces。jsp
另外有三种场景与此相关分别是:spa
以上描述的是JSF页面和非JSF页面之间转换的问题,能够说是JSF生命周期中的一种特殊的状况。code
标准请求处理的生命周期:orm
Restore View(视图重建)阶段:blog
当咱们请求一个JSF页面的时候,这个阶段会出现。JSF会构建这个页面的视图,链接组建的事件处理器和验证器,生命周期
并将页面的视图存到Faces Context的实例中。FacesContext的实例中包含了一切用来处理独立请求的信息。全部应用的组建标签,事件处理器,转换器和验证器都会访问它。队列
若是对页面的请求是初次请求,那么系统会给一个空的视图,并将生命周期推动到响应渲染阶段。进程
应用请求阶段(Apply Request Values Phase)事件
组件树被重建以后,树上的每个组件都会使用它们的decode方法来从请求参数中提取它们的新的值。这些值将会被这些组件本身保存起来。若是在提取值的时候发生了转换失败的错误,那么和这个组件相关的一个错误信息会生成,并进入FacesContext(称为上下文)的队列之中。这个错误信息将会在响应渲染阶段(render response phase)和进程验证阶段产生的全部错误的结果一块儿被显示出来。ci
若是解码方法和事件监听器调用了上下文中的renderResponse方法,系统将会进入响应渲染阶段。
若是事件在这个阶段中已经被转入队列中,那么系统会事件传递给对其感兴趣的监听。
若是某些页面上的组件的当即属性(immediate attributes)被置为真的话,那么,与这个组件相关的验证,转换和关联事件操做都会在这个阶段完成。
这时,若是程序须要跳转到一个不一样的应用中或者产生一个不包含任何JSF组件的响应的时候,能够调用FacesContext.responseComplete
验证处理阶段(Process Validations Phase)
在这个阶段,系统会执行组件树上的组件注册的所有的验证器。系统会根据组件的属性的验证规则与本地值是否一致。
若是本地值非法,系统会在上下文中增长一个错误信息。而且将周期跳转到响应渲染阶段。页面会再次渲染以便于显示错误信息。若是有转换的错误也会发生一样的事情。
也可能发生像上一个阶段同样的跳转和事件传递的状况。
更新模型值(Update Model Values Phase)
更新与组件绑定的模型的值。有可能出现转换错误,处理过程同上。其余状况同上。
应用执行阶段(Invoke Application Phase)
系统在这一阶段中会执行所有的应用级事件。跳转同上。
请求渲染阶段(Render Response Phase)
若是你使用jsp那么系统会代替jsp容器进行渲染工做。若是是初次请求,系统会将组件加入到组件树上。若是不是则不会。在以上两种状况下,组件都会随着JSP容器解析页面标签的时候一并渲染本身。