JSF - 生命周期



JSF 应用程序生命周期包含以下六个阶段:

  • 恢复视图阶段
  • 应用请求值阶段;处理事件
  • 处理验证阶段;处理事件
  • 更新模型值阶段;处理事件
  • 调用应用程序阶段;处理事件
  • 渲染响应阶段
JSF Life Cycle

这六个阶段展示了 JSF 处理表单的顺序。列表按执行的可能顺序显示了这些阶段,并在每个阶段都进行了事件处理。

阶段 1:恢复视图

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

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

阶段 2:应用请求值

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

如果任何 decode 方法事件监听器在当前 FacesContext 实例上调用 renderResponse,则 JSF 将移动到渲染响应阶段。

阶段 3:处理验证

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

如果本地值无效,JSF 会将错误消息添加到 FacesContext 实例中,生命周期将前进到渲染响应阶段,并再次显示同一页面以及错误消息。

阶段 4:更新模型值

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

如果任何 updateModels 方法在当前 FacesContext 实例上调用 renderResponse,则 JSF 将移动到渲染响应阶段。

阶段 5:调用应用程序

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

阶段 6:渲染响应

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

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

广告