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