什么是视图构建时间?

时间:2015-08-08 06:41:08

标签: jsf jsf-2 lifecycle

我是JSF的新手并阅读了一些像this one这样的堆栈答案,我遇到了 视图构建时间 的概念。考虑JSF生命周期方案:

enter image description here

如您所见,没有名为 视图构建时间 的阶段。也许它与 还原视图 阶段相同?来自JavaEE tutorial

  

在此阶段,JavaServer Faces实现构建视图   页面[...]

1 个答案:

答案 0 :(得分:24)

视图构建时间不是阶段。视图构建时间是物理UIViewRoot实例及其所有子项基于视图声明构建的时刻,该声明通常在XHTML或JSP文件中定义。

视图构建时间不限于特定的JSF生命周期阶段。技术上可以在任何阶段发生。默认情况下,它确实通常在还原视图阶段执行,但也可以在呈现响应阶段执行,特别是在请求是GET请求时,或者在POST请求期间进行导航时。开发人员还可以通过ViewDeclarationLanguage#buildView()以编程方式构建视图,或者在导航不足以执行特定任务时隐式强制JSF实现通过FacesContext#setViewRoot()执行此操作。

恢复视图阶段只是将JSF状态恢复到视图中。即它使用在同一视图上的上一个请求期间的值设置组件属性。这样,JSF确切地知道在将表单呈现给最终用户时该视图的样子,并且可以对防篡改的请求进行一些保护。

另见: