JSF - 生命周期

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

  • 恢复视图阶段

  • 应用请求值阶段;流程事件

  • 流程验证阶段;流程事件

  • 更新模型值阶段;流程事件

  • 调用应用程序阶段;处理事件

  • 渲染响应阶段

JSF生命周期

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

阶段1:恢复视图

JSF开始恢复视图一旦单击链接或按钮并且JSF收到请求,就立即进行阶段.

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

阶段2:应用请求值

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

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

阶段3:流程验证

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

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

阶段4:更新模型值

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

如果当前FacesContext实例上有任何updateModels方法调用renderResponse,则JSF将移至渲染响应阶段.

阶段5:调用应用程序

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

阶段6:渲染响应

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

在呈现视图的内容之后,将保存响应状态,以便后续请求可以访问它,它可用于还原视图阶段.