2009年1月9日星期五

JSF_009:JSF 的生命周期

JSF页面的生命周期与JSP页面的生命周期有几分类似:客户端发起一个HTTP请求,请求该页面,服务端响应该请求,把该页面(转换成HTML)返回给客户端。
但是,JSF页面的生命周期要更复杂,它增加了一些服务。
根据不同的请求(initial requests 和 postbacks),生命周期所包括的阶段有所不同。
如果是initial requests,表明客户端是第一次请求该页面,因为没有任何用户输入,生命周期只有restore view 和 render response这两个阶段;
如果是postbacks,表明客户端是提交了一个表单(含有该表单的页面之前已经被initial requests 请求显示了),此时生命周期将包括完整的六个阶段。

除了事件处理,JSF的生命周期包括六个阶段:
  1. 恢复视图(Restore View)
    在此阶段,会接到一个来自FacesServlet控制器的请求。控制器会对请求进行考查,并提取出视图ID,就是该JSP页面的名称。
    控制器根据视图ID来查找该视图的所有组件。如果这个视图尚未存在,控制器会创建它;如果这个视图已经存在,控制器会使用它。
    如果是initial requests,为该页面新的组件树,然后直接到阶段6:绘制响应阶段;如果是postbacks,进入阶段2。

  2. 套用申请值(Apply Request Values)
    每个组件尝试从请求中找寻自己的参数并更新组件值,接着触发ActionEvent,该事件会被排入队列中,直到阶段5(唤起应用程序)由事件处理者进行处理。

  3. 执行验证(Process Validations)
    进行转换与验证。如果验证出错,则会跳过之后的阶段,直接到阶段6:绘制响应阶段,重新呼叫同一页面并绘制结果。

  4. 更新模型值(Update Model Values)
    更新每一个与组件绑定的backing bean 或 模型对象。

  5. 唤起应用程序(Invoke Application)
    处理动作事件,执行后端应用程序逻辑。

  6. 绘制回应(Render Response)
    使用绘制器绘制页面。

没有评论: