JSF Lifecycle

Posted ggggggg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSF Lifecycle相关的知识,希望对你有一定的参考价值。

一个生命周期开始时面临的JavaServer应用客户端发出一个HTTP请求页面并在服务器响应页面时结束,将其转换为html。生命周期可以分为两个主要阶段:执行和呈现。执行阶段进一步划分为亚支持复杂的组件树。这种结构要求组件的数据转换和验证,组件的事件处理,和组件的数据被传递到豆有序。一个JSF页面由一树的组成部分,称为一个视图。在生命周期,JavaServer Faces的实施必须建立在考虑从查看以前提交的页面保存状态。当客户端请求一个页面,JavaServer Faces实现执行多种任务,如验证组件的数据输入视图转换输入数据在服务器端指定的类型。

请求-响应周期处理两种要求:初始请求和回发。当用户第一次请求页面时,就会发生初始请求。回发请求发生在用户提交包含在页面加载到浏览器之前执行结果的初始请求的形式。当生命周期处理初始请求时,它只执行还原视图和呈现响应阶段,因为没有用户输入或要处理的操作。相反,当生命周期处理回发,它执行所有阶段。通常,对于JavaServer第一次请求页面来自客户端,作为一个结果点击一个链接或按钮组件JavaServer页面。渲染响应是另一个JSF页面,应用程序创建一个新视图它存储在javax.faces.context.facescontext实例,它代表所有处理传入的请求,并创建一个相关的信息响应。有时,应用程序可能需要重定向到不同的Web应用程序。资源,如Web服务,或生成不包含的响应JavaServer Faces组件。在这种情况下,开发人员必须跳过渲染。通过调用facescontext.responsecomplete方法响应阶段。最常见的情况是,JavaServer Faces组件提交一个请求页面JavaServer。在这种情况下,JavaServer Faces实现处理请求并自动通过在生命周期各阶段执行任何必要的转换、验证和模型更新和生成响应。

JavaServer Faces应用生命周期执行阶段包含以下:

恢复视图阶段:当一个请求页面JavaServer制成,通常由一个动作,如当一个链接或按钮组件时,JavaServer Faces实现开始恢复视图阶段。在这个阶段,JavaServer Faces实现构建页面的视图,电线事件处理程序和验证组件的视图,并保存视图FacesContext实例,其中包含所有需要的信息的过程单一的请求。所有应用程序的组件、事件处理程序、转换器和验证器获取FacesContext实例。如果该页的请求是一个最初的请求,JavaServer Faces实现在这个阶段创建一个空视图,生命周期推进到渲染。响应阶段,在此期间使用组件填充空视图由页面中的标签引用。如果该页的请求是回发,一个视图对应到这个网页已经存在在FacesContext实例。在这个阶段,JavaServer Faces实现恢复视图利用保存在客户端的状态信息服务器。

应用请求值阶段:组件树后回发请求过程中恢复,在每个组件树使用其解码方法从请求参数中提取其新值。然后在每个组件上本地存储该值。如果任何解码方法或事件监听器呼吁当前FacesContext实例的renderresponse方法,JavaServer Faces实现跳到渲染响应阶段。如果任何事件都被排在这一阶段,JavaServer Faces实现将事件广播给感兴趣的侦听器。如果页面上的某些组件将其即时属性设置为true,则验证,转换,并与这些组件相关联的事件将被处理在此阶段。如果转换失败,与组件关联生成错误消息和队列在FacesContext。这个消息将在产生响应的阶段显示,连同任何验证错误的工艺验证阶段。此时,如果应用程序需要重定向到不同的Web应用程序资源或生成的反应,不含任何JavaServer Faces组件,它可以打电话给facescontext.responsecomplete方法。在这个阶段结束时,组件被设置为它们的新值,以及消息和事件已排好队。

处理校验阶段:在这个阶段,JavaServer Faces实现过程的所有验证注册的在树上的元件用其验证方法。它检查指定验证规则的组件属性,并将这些规则与组件存储的本地值进行比较。JavaServer Faces实现同时完成转换输入组件没有直接属性设置为true。如果当地的值无效,或如果转换失败,JavaServer Faces实现添加一个错误消息到FacesContext实例的生命周期,并提出直接响应合成阶段,呈现页面再次显示的错误信息。如果应用请求值阶段有转换错误,也会显示这些错误的消息。如果任何验证方法或事件侦听器被称为renderresponse方法当前FacesContext,JavaServer Faces实现跳到渲染响应阶段。此时,如果应用程序需要重定向到不同的Web应用程序资源或生成的反应,不含任何JavaServer Faces组件,它可以打电话给facescontext.responsecomplete方法。如果事件被排在这一阶段,JavaServer Faces实现广播给感兴趣的侦听器。

更新模型值阶段:在JSF实现确定的数据是有效的,它遍历组件树并设置相应的服务器端对象属性。对组件的本地值。JavaServer Faces实现更新由输入组件的值属性指向的bean属性。如果地方数据不能转换为bean属性指定的类型,生命周期。直接前进到呈现响应阶段,使页面重新呈现错误显示。这与验证错误发生的情况类似。如果任何updatemodels方法或任何听众都称为renderresponse方法对当前FacesContext实例,JavaServer Faces实现跳到呈现响应阶段。此时,如果应用程序需要重定向到不同的Web应用程序资源或生成的反应,不含任何JavaServer Faces组件,它可以打电话给facescontext.responsecomplete方法。如果任何事件都被排在这一阶段,JavaServer Faces实现将它们广播给感兴趣的侦听器。

调用应用程序阶段:在这个阶段,JavaServer Faces实现处理任何应用水平事件,例如提交表单或链接到其他页面。此时,如果应用程序需要重定向到不同的Web应用程序资源或生成的反应,不含任何JavaServer Faces组件,它可以打电话给facescontext.responsecomplete方法。如果正在处理的视图是从以前的状态信息中重建的请求,如果某个组件触发了一个事件,这些事件将被广播到感兴趣的听众。最后,JavaServer Faces实现传输控制到渲染响应相。

渲染阶段:在这个阶段,JavaServer Faces建立视图和代表权的用于呈现页面的适当资源。如果这是一个初始请求,页面上表示的组件将为添加到组件树中。如果这不是最初的请求,组件是已经添加到树上了,不必再添加了。如果请求是回发请求,在应用中遇到的错误值阶段,工艺验证阶段,或更新模型值阶段,原在这个阶段中再次显示页面。如果页面包含H消息或h:消息标签,任何排队错误消息都显示在页面上。在呈现视图的内容之后,响应的状态被保存,这样后续的请求就可以访问它。保存状态对恢复视图阶段可用。

 

以上是关于JSF Lifecycle的主要内容,如果未能解决你的问题,请参考以下文章

将带有 Ajax4jsf 1.x 的 JSF 1.1 迁移到 JSF 2

JSF 组件渲染器中的 JSF 标记

JSF/Facelets:为啥将 JSF/Facelets 与 HTML 标签混合不是一个好主意?

jsf 2.0 上的 JSF1064“无法找到或提供资源”警告

从 JSF 1.2 迁移到 JSF 2.0 后,每次导航都出现 ViewExpiredException

JSF2:在运行时构建 JSF2 视图(整个组件树)