返回顶部

JSF生命周期是怎样的

[复制链接]
蓝毒Lv.2 显示全部楼层 发表于 2021-11-4 11:11:19 |阅读模式 打印 上一主题 下一主题
  JSF(JavaServer Faces)应用程序框架的简单程序是自动管理生命周期阶段,并允许您手动管理。JSF(JavaServer Faces)应用程序的生命周期从客户端对页面发出HTTP请求时开始,并在服务器响应页面时结束。

  JSF生命周期分为两个主要阶段:

  执行阶段

  渲染阶段

  一、执行阶段

  在执行阶段,当第一次请求时,构建或恢复应用程序视图。 对于其他后续请求,执行其他操作,如应用请求参数值,对组件值执行转换和验证,受托管的bean将使用组件值进行更新,并调用应用程序逻辑。

  执行阶段被进一步分成以下子阶段。

  恢复视图阶段

  应用请求值阶段

  流程验证阶段

  更新模型值阶段

  调用应用阶段

  渲染响应阶段

  1、恢复视图阶段

  当客户端请求一个JavaServer Faces页面时,JavaServer Faces实现开始恢复视图阶段。 在此阶段,JSF将视图中的组件构建为请求页面,线性事件处理程序和验证器的视图,并将视图保存在FacesContext实例中。

  如果对该页面的请求是回发,那么与该页面相对应的视图已经存在于FacesContext实例中。 在此阶段,JavaServer Faces实现通过使用保存在客户端或服务器上的状态信息来还原视图。

  2、应用请求值阶段

  在此阶段,在回发请求期间恢复组件树。 组件树是表单元素的集合。树中的每个组件通过使用其decode(processDecodes())方法从请求参数中提取其新值。 之后,该值将本地存储在每个组件上。

  如果任何解码方法或事件侦听器在当前FacesContext实例上调用了renderResponse方法,则JavaServer Faces实现将跳过“渲染响应”阶段。

  如果任何事件在此阶段已排队,则JavaServer Faces实现将事件广播到有兴趣的监听器。

  如果应用程序需要重定向到其他Web应用程序资源或生成不包含任何JavaServer Faces组件的响应,则可以调用FacesContext.responseComplete()方法。

  如果当前请求被识别为部分请求,则从FacesContext检索部分上下文,并应用部分处理方法。

  3、流程验证阶段

  在此阶段,JavaServer Faces通过使用其validate()方法来处理在组件上注册的所有验证器。 它检查指定验证规则的组件属性,并将这些规则与为组件存储的本地值进行比较。 JavaServer Faces还完成了没有将immediate属性设置为true的输入组件的转换。

  如果任何验证方法或事件侦听器在当前FacesContext上调用了renderResponse方法,则JavaServer Faces实现将跳过“渲染响应”阶段。

  如果应用程序需要重定向到不同的Web应用程序资源或生成不包含任何JavaServer Faces组件的响应,则可以调用FacesContext.responseComplete方法。

  如果事件在此阶段已排队,则JavaServer Faces实现将它们广播给有兴趣的监听器。

  如果当前请求被识别为部分请求,则从FacesContext检索部分上下文,并应用部分处理方法。

  4、更新模型值阶段

  确保数据有效后,它遍历组件树,并将相应的服务器端对象属性设置为组件的本地值。 JavaServer Faces实现只更新输入组件的value属性指向bean属性。 如果本地数据无法转换为bean属性指定的类型,生命周期将直接前进到“渲染响应”阶段,以便重新呈现页面并显示错误。

  如果任何updateModels方法或任何监听器在当前FacesContext实例上调用了renderResponse()方法,则JavaServer Faces实现将跳过“渲染响应”阶段。

  如果应用程序需要重定向到其他Web应用程序资源或生成不包含任何JavaServer Faces组件的响应,则可以调用FacesContext.responseComplete()方法。

  如果任何事件在此阶段已排队,JavaServer Faces实现将它们广播到有兴趣的监听器。

  如果当前请求被识别为部分请求,则从FacesContext检索部分上下文,并应用部分处理方法。

  5、调用应用阶段

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

  现在,如果应用程序需要重定向到其他Web应用程序资源或生成不包含任何JSF组件的响应,则可以调用FacesContext.responseComplete()方法。

  之后,JavaServer Faces实现将控制转移到“渲染响应”阶段。

  6、渲染响应阶段

  这是JSF生命周期的最后阶段。 在此阶段,JSF将构建视图并将权限委托给相应的资源来呈现页面。

  如果这是初始请求,则页面上表示的组件将被添加到组件树中。

  如果这不是初始请求,组件已经添加到树中,不需要再添加。

  如果请求是回应,并且在应用请求值阶段,过程验证阶段或更新模型值阶段期间遇到错误,则在此阶段将再次呈现原始页面。

  如果页面包含h:message或h:messages标签,页面上会显示任何排队的错误消息。

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

  二、 渲染阶段

  在此阶段,请求的视图作为对客户端浏览器的响应。 视图渲染是以HTML或XHTML生成输出的过程。 所以,用户可以在浏览器看到它。

  在渲染过程中采取以下步骤。

  当客户端对index.xhtml网页进行初始请求时,编译应用程序。

  应用程序在编译后执行,并为应用程序构建一个新的组件树,并放置在FacesContext中。

  使用由EL表达式表示的组件和与其关联受托管bean属性填充组件树。

  基于组件树。 建立了新的视图。

  该视图作为响应呈现给请求客户端。

  组件树被自动销毁。

  在后续请求中,重新构建组件树,并应用已保存的状态。
(免责声明:内容及图片来源于公开网络,若涉及侵权联系尽快删除!)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

达内教育:成立于2002年。致力于面向IT互联网行业,培养软件开发工程师、测试工程师、系统管理员、智能硬件工程师、UI设计师、网络营销、会计等职场人才 达内使命:缔造年轻人的中国梦、缔造达内员工的中国梦 达内愿景:做管理一流的教育公司
  • 商务合作

  • 微信公众号

  • Powered by Discuz! X3.4 | Copyright © 2002-2021, 达内教育 Tedu.cn
  • 京ICP备08000853号-56 |网站地图 | 京公网安备 11010802029508号