📅  最后修改于: 2020-10-23 06:41:43             🧑  作者: Mango
JSF应用程序生命周期包括六个阶段,这些阶段如下所示:
六个阶段显示了JSF处理表单的顺序。该列表按阶段的执行顺序显示阶段,并在每个阶段进行事件处理。
单击链接或按钮并且JSF收到请求后,JSF便开始恢复视图阶段。
在此阶段中,JSF构建视图,将事件处理程序和验证器连接到UI组件,并将视图保存在FacesContext实例中。 FacesContext实例现在将包含处理请求所需的所有信息。
创建/还原组件树之后,组件树中的每个组件都使用解码方法从请求参数中提取其新值。组件存储该值。如果转换失败,将生成错误消息并将其排队在FacesContext上。该消息将在渲染响应阶段以及任何验证错误中显示。
如果在当前FacesContext实例上有任何解码方法事件侦听器称为renderResponse,则JSF进入渲染响应阶段。
在此阶段,JSF处理在组件树上注册的所有验证器。它检查组件属性规则以进行验证,并将这些规则与为组件存储的本地值进行比较。
如果本地值无效,那么JSF会将错误消息添加到FacesContext实例,并且生命周期前进到渲染响应阶段,并再次显示包含错误消息的同一页面。
JSF检查数据有效后,它将遍历组件树并将相应的服务器端对象属性设置为组件的本地值。 JSF将更新与输入组件的value属性相对应的bean属性。
如果当前FacesContext实例上有任何称为renderResponse的updateModels方法,则JSF进入渲染响应阶段。
在此阶段中,JSF处理所有应用程序级事件,例如提交表单/链接到另一个页面。
在此阶段,如果应用程序正在使用JSP页面,则JSF要求容器/应用程序服务器呈现页面。对于初始请求,页面上表示的组件将在JSP容器执行页面时添加到组件树中。如果这不是初始请求,则组件树已构建,因此无需再次添加组件。无论哪种情况,组件都将在JSP容器/应用程序服务器遍历页面中的标记时呈现。
呈现视图的内容之后,将保存响应状态,以便后续请求可以访问它,并且该状态可用于还原视图阶段。