Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 在encodeBegin中创建的JSF组件在decode中不可见_Jsf 2_Primefaces_Custom Component - Fatal编程技术网

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");
// ...
另见:

您能否解释为什么从getStateHelper().eval(“someKey”)检索值;解码时是否始终为空?不应发生这种情况。该组件是在视图中声明的还是您手动创建的?后者可以解释。我正在自定义组件中手动创建它。您不应该手动创建自定义组件。自定义组件应该由视图创建。我的站点中有它:在这个组件的内部,我正在创建commandButton