但是,JSF页面的生命周期要更复杂,它增加了一些服务。
根据不同的请求(initial requests 和 postbacks),生命周期所包括的阶段有所不同。
如果是initial requests,表明客户端是第一次请求该页面,因为没有任何用户输入,生命周期只有restore view 和 render response这两个阶段;
如果是postbacks,表明客户端是提交了一个表单(含有该表单的页面之前已经被initial requests 请求显示了),此时生命周期将包括完整的六个阶段。
除了事件处理,JSF的生命周期包括六个阶段:
- 恢复视图(Restore View)
在此阶段,会接到一个来自FacesServlet控制器的请求。控制器会对请求进行考查,并提取出视图ID,就是该JSP页面的名称。
控制器根据视图ID来查找该视图的所有组件。如果这个视图尚未存在,控制器会创建它;如果这个视图已经存在,控制器会使用它。
如果是initial requests,为该页面新的组件树,然后直接到阶段6:绘制响应阶段;如果是postbacks,进入阶段2。 - 套用申请值(Apply Request Values)
每个组件尝试从请求中找寻自己的参数并更新组件值,接着触发ActionEvent,该事件会被排入队列中,直到阶段5(唤起应用程序)由事件处理者进行处理。 - 执行验证(Process Validations)
进行转换与验证。如果验证出错,则会跳过之后的阶段,直接到阶段6:绘制响应阶段,重新呼叫同一页面并绘制结果。 - 更新模型值(Update Model Values)
更新每一个与组件绑定的backing bean 或 模型对象。 - 唤起应用程序(Invoke Application)
处理动作事件,执行后端应用程序逻辑。 - 绘制回应(Render Response)
使用绘制器绘制页面。
没有评论:
发表评论