JSF - 生命周期


JSF 应用程序生命周期由六个阶段组成,如下所示 -

  • 恢复视图阶段
  • 应用请求值阶段;处理事件
  • 流程验证阶段;处理事件
  • 更新模型值阶段;处理事件
  • 调用应用阶段;处理事件
  • 渲染响应阶段
JSF 生命周期

这六个阶段显示了 JSF 处理表单的顺序。该列表按可能的执行顺序显示了各个阶段以及每个阶段的事件处理。

第一阶段:恢复视图

一旦单击链接或按钮并且 JSF 收到请求,JSF 就会开始恢复视图阶段。

在此阶段,JSF 构建视图,将事件处理程序和验证器连接到 UI 组件,并将视图保存在 FacesContext 实例中。FacesContext 实例现在将包含处理请求所需的所有信息。

第 2 阶段:应用请求值

创建/恢复组件树后,组件树中的每个组件都使用decode方法从请求参数中提取其新值。组件存储该值。如果转换失败,则会生成错误消息并在 FacesContext 上排队。此消息将在渲染响应阶段显示,以及任何验证错误。

如果任何解码方法事件侦听器在当前 FacesContext 实例上调用 renderResponse,则 JSF 将进入呈现响应阶段。

第 3 阶段:流程验证

在此阶段,JSF 处理在组件树上注册的所有验证器。它检查组件属性规则以进行验证,并将这些规则与为组件存储的本地值进行比较。

如果本地值无效,JSF 会向 FacesContext 实例添加一条错误消息,生命周期将进入渲染响应阶段,并再次显示带有错误消息的同一页面。

第 4 阶段:更新模型值

JSF 检查数据是否有效后,它会遍历组件树并将相应的服务器端对象属性设置为组件的本地值。JSF 将更新与输入组件的 value 属性相对应的 bean 属性。

如果任何 updateModels 方法在当前 FacesContext 实例上调用 renderResponse,JSF 就会进入渲染响应阶段。

阶段 5:调用应用程序

在此阶段,JSF 处理任何应用程序级事件,例如提交表单/链接到另一个页面。

第 6 阶段:渲染响应

在此阶段,如果应用程序使用 JSP 页面,JSF 会要求容器/应用程序服务器呈现页面。对于初始请求,当 JSP 容器执行页面时,页面上表示的组件将被添加到组件树中。如果这不是初始请求,则组件树已经构建,因此不需要再次添加组件。无论哪种情况,当 JSP 容器/应用程序服务器遍历页面中的标记时,组件都会呈现自身。

渲染视图内容后,将保存响应状态,以便后续请求可以访问它,并且可用于恢复视图阶段。