什么是视图编译时间?

我对JSF相当陌生,并且正在阅读一些堆栈答案,比如这个 ,我遇到了view build time的概念。 考虑JSF生命周期scheme:

在这里输入图像描述

正如你所看到的,没有什么阶段叫做视图编译时间 。 也许这意味着与恢复查看阶段相同? 从JavaEE教程

在这个阶段,JavaServer Faces实现build立页面的视图[…]

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

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

还原视图阶段只是将JSF状态恢复到视图中。 也就是说,它在前面的请求期间在同一个视图中设置了组件属性的值。 通过这种方式,JSF确切地知道在向最终用户呈现表单时视图是怎样的,并且可以在其他方面防止被篡改的请求。

也可以看看:

  • “绑定”属性在JSF中如何工作? 何时以及如何使用?
  • 从xhtml文件创buildjsf视图/组件树
  • JSF 2全局exception处理,导航到错误页面不会发生
  • 为什么JSF在服务器上保存UI组件的状态?