视图构建时间不是阶段。视图构建时间是那一刻,基于视图声明(通常在XHTML或JSP文件中定义),构建了物理UIViewRoot
实例及其所有子项。
视图构建时刻并不限于特定的JSF生命周期阶段。它可以在任何阶段发生。默认情况下,在恢复视图阶段通常执行,但在渲染响应阶段也可能发生,特别是在请求为GET请求或导航在POST请求期间发生时。开发人员还可以通过ViewDeclarationLanguage#buildView()
编程方式构建视图,或通过FacesContext#setViewRoot()
隐式地强制JSF实现执行该操作,当导航对于特定任务不足够时。
恢复视图阶段只是将JSF状态还原到视图中。即它将组件属性设置为与它们在同一视图上的前一个请求期间相同的值。这样,JSF就知道表单展示给最终用户时视图的确切状态,并可以在其他情况下对抗篡改请求。