什么是视图构建时间?

What's the view build time?

我是 JSF 的新手,阅读了一些堆栈答案,例如 this one,我遇到了 查看构建时间。考虑 JSF 生命周期方案:

如您所见,没有名为 查看构建时间 的阶段。也许和Restore view阶段的意思一样?来自 JavaEE tutorial

During this phase, the JavaServer Faces implementation builds the view of the page [...]

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

视图构建时间不限于特定的 JSF 生命周期阶段。它在技术上可以发生在任何阶段。默认情况下,它确实通常在恢复视图阶段执行,但它也可能发生在呈现响应阶段,特别是当请求是 GET 请求时,或者在 POST 请求期间发生导航时。当导航不足以完成特定任务时,开发人员还可以通过 ViewDeclarationLanguage#buildView(), or implicitly force the JSF implementation to do that via FacesContext#setViewRoot() 以编程方式构建视图。

恢复视图阶段只是将 JSF 状态恢复到视图中。 IE。它将组件属性的值设置为它们在同一视图上的先前请求期间的值。通过这种方式,JSF 确切地知道在将表单呈现给最终用户时视图的样子,并且可以针对篡改请求采取一些保护措施。

另请参阅:

  • How does the 'binding' attribute work in JSF? When and how should it be used?
  • creating jsf view/Component tree from the xhtml file
  • JSF 2 Global exception handling, navigation to error page not happening
  • Why JSF saves the state of UI components on server?