我是JSF的新手并阅读了一些像this one这样的堆栈答案,我遇到了 视图构建时间 的概念。考虑JSF生命周期方案:
如您所见,没有名为 视图构建时间 的阶段。也许它与 还原视图 阶段相同?来自JavaEE tutorial
在此阶段,JavaServer Faces实现构建视图 页面[...]
答案 0 :(得分:24)
视图构建时间不是阶段。视图构建时间是物理UIViewRoot
实例及其所有子项基于视图声明构建的时刻,该声明通常在XHTML或JSP文件中定义。
视图构建时间不限于特定的JSF生命周期阶段。技术上可以在任何阶段发生。默认情况下,它确实通常在还原视图阶段执行,但也可以在呈现响应阶段执行,特别是在请求是GET请求时,或者在POST请求期间进行导航时。开发人员还可以通过ViewDeclarationLanguage#buildView()
以编程方式构建视图,或者在导航不足以执行特定任务时隐式强制JSF实现通过FacesContext#setViewRoot()
执行此操作。
恢复视图阶段只是将JSF状态恢复到视图中。即它使用在同一视图上的上一个请求期间的值设置组件属性。这样,JSF确切地知道在将表单呈现给最终用户时该视图的样子,并且可以对防篡改的请求进行一些保护。