Jsf 关于UI组件状态和阶段的几个问题
通过这些出色的职位: 在JavaEE6教程的中途,我还有以下问题:Jsf 关于UI组件状态和阶段的几个问题,jsf,jsf-2,Jsf,Jsf 2,通过这些出色的职位: 在JavaEE6教程的中途,我还有以下问题: 当我开发一个自定义UI组件时,其值(styleClass、value等)要么是静态定义的(在xhtml中),要么是通过bean设置的,我是否也需要在扩展组件中显式地保存/恢复状态 说UI组件的范围是视图范围是正确的吗 视图是如何识别行为的?(如果我离开某个视图,该视图将在下次重新生成。但是如果我打开另一个选项卡,它将被还原-至少是bean!) 当我执行Ajax调用时,我希望UI组件的“执行”部分将被恢复和处理,“呈现”部分将
说UI组件的范围是视图范围是正确的吗 绝对不是。UI组件实例在请求范围内。只有通过
stateheloper
存储的任何内容本质上是视图范围(并在“恢复视图”阶段恢复到新创建的组件实例中)
另见:
视图是如何识别行为的?(如果我离开某个视图,该视图将在下次重新生成。但是如果我打开另一个选项卡,它将被还原-至少是bean!) 它可能是从浏览器缓存请求的。尝试在其中提交表单。您获得
ViewExpiredException
的可能性很大。您需要告诉浏览器不要缓存动态页面。在bean的构造函数上放置断点也会确认它从未被调用过
另见:
当我执行Ajax调用时,我希望UI组件的“执行”部分将被恢复和处理,“呈现”部分将被恢复和更新 对于恢复零件,情况并非如此。将恢复“整个”视图状态。请注意,视图状态并不代表整个组件树,因为JSF2.0不一定代表整个组件树。您已经在问题中提到的两个链接中找到了对此的解释/答案
如何定义构建时组件(相对于渲染时),以及为什么要这样做?(构建时组件与rendertime混合时似乎很麻烦,为什么两者都有呢) 这称为“标记处理程序”。也就是说,仅从扩展而不是按照其合同执行。如果唯一的目标是构建视图(JSF组件树),那么标记处理程序非常有用。它们不会出现在JSF组件树中。至于何时创建自定义组件或自定义标记处理程序,请查看的“组件”和“标记处理程序”部分,它可能会为这些东西的实际用例提供一些新的见解 另见: