Jsf 2 在encodeBegin中创建的JSF组件在decode中不可见
可能重复:Jsf 2 在encodeBegin中创建的JSF组件在decode中不可见,jsf-2,primefaces,custom-component,Jsf 2,Primefaces,Custom Component,可能重复: 我已经创建了扩展UIComponentBase的自定义组件。我在创造 encodeBegin(CommandButton来自Primefaces)中的某些组件,但是 当我查找按钮时,用户单击按钮是否会触发decode 存在于UIViewRoot中,而不存在于this.getChildren()中 它似乎是在触发decode且组件不存在时调用的组件的新实例。 怎么了 某些代码位于: 如果你愿意,我可以发送完整的代码 我发现PrimeFaces和其他软件中使用了这种技术,但您能解释
我已经创建了扩展
UIComponentBase
的自定义组件。我在创造
encodeBegin
(CommandButton
来自Primefaces)中的某些组件,但是
当我查找按钮时,用户单击按钮是否会触发decode
存在于UIViewRoot
中,而不存在于this.getChildren()
中
它似乎是在触发decode
且组件不存在时调用的组件的新实例。
怎么了
某些代码位于:
如果你愿意,我可以发送完整的代码
我发现PrimeFaces和其他软件中使用了这种技术,但您能解释一下为什么从getStateHelper().eval(“someKey”)检索值吗;解码时是否始终为空 我的网站可能有问题,但我不能解决吗 这是指向我启动的线程的链接: 它似乎是在触发解码且组件不存在时调用的组件的新实例 没错。零部件实例不存储在视图状态中。相反,组件的状态存储在视图状态中。组件的状态可以由帮助器类管理,该类由提供 因此,在编码过程中,请执行以下操作:
// ...
getStateHelper().put("someKey", someKey);
在解码过程中,执行以下操作:
SomeKey someKey = (SomeKey) getStateHelper().eval("someKey");
// ...
另见: