视图构建时间是什么?

20

我对JSF比较陌生,读了一些像这样的堆栈回答,遇到了视图构建时间的概念。考虑JSF生命周期方案:

enter image description here

正如您所看到的,没有称为视图构建时间的阶段。也许它意味着与还原视图阶段相同?来自JavaEE教程

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

1个回答

28

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

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

恢复视图阶段只是将JSF状态还原到视图中。即它将组件属性设置为与它们在同一视图上的前一个请求期间相同的值。这样,JSF就知道表单展示给最终用户时视图的确切状态,并可以在其他情况下对抗篡改请求。

另请参阅:

  • JSF 2全局异常处理,无法导航到错误页面
  • 为什么JSF会将UI组件的状态保存在服务器上?

  • 7
    简单来说,"building view"的意思是创建Java表示(即树形数据结构)我们声明的标记。因此,我们将xhtml页面(自然形成标记树)映射到相应的Java树形数据结构上,其中任何组件标记都被映射到其组件类。 - stella

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接