Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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 如何从datatable更新面板_Jsf_Primefaces_Xhtml - Fatal编程技术网

Jsf 如何从datatable更新面板

Jsf 如何从datatable更新面板,jsf,primefaces,xhtml,Jsf,Primefaces,Xhtml,id为(“myButtonId2”)的Commandbutton工作正常。我的意思是它会更新“myOutputPanel”,但datatable中的commandbutton不会更新outputPanel。数据表是否有特定的更新样式 <h:form id="myForm" prependId="false"> <p:panel id="myPanel"> <p:dataTable id="myDatatable"> <p:c

id为(“myButtonId2”)的Commandbutton工作正常。我的意思是它会更新“myOutputPanel”,但datatable中的commandbutton不会更新outputPanel。数据表是否有特定的更新样式

<h:form id="myForm" prependId="false">
  <p:panel id="myPanel">
     <p:dataTable id="myDatatable">
        <p:column style="width:4%">  
          <p:commandButton id="myButtonId" update="myOutputPanel"/>
        </p:column>
     </p:dataTable>
     <p:commandButton id="myButtonId2" update="myOutputPanel"/>
    </p:panel>

 <p:outputPanel id="myOutputPanel">
  //some stuff
 </p:outputPanel>

//一些东西

这是因为使用
过程
更新
时,它们的工作方式与
f:ajax
组件属性
执行
渲染
的工作方式基本相同。如果组件位于同一
NamingContainer
中,则只能直接引用组件的id

clientID是通过在命名容器ID前面加前缀生成的,默认情况下,命名容器ID由
分隔。
p:panel
组件没有实现
NamingContainer
,尽管
h:form
p:dataTable
确实实现了
NamingContainer

myOutputPanel
的客户端ID如下所示:

myForm:myOutputPanel
第二个按钮之所以有效,是因为它位于dataTable之外,并且与表单所在的NamingContainer中的
myOutputPanel
相关。要在
过程
更新
中引用绝对clientID,可以在clientID前面加上
符号

尝试将第一个命令按钮的
update
属性更改为:

:myForm:myOutputPanel

这应该允许它绝对地引用它生成的clientID并工作。

这是因为使用
进程
更新
时,它们的工作方式与
f:ajax
组件属性
执行
渲染
do的工作方式基本相同。如果组件位于同一
NamingContainer
中,则只能直接引用组件的id

clientID是通过在命名容器ID前面加前缀生成的,默认情况下,命名容器ID由
分隔。
p:panel
组件没有实现
NamingContainer
,尽管
h:form
p:dataTable
确实实现了
NamingContainer

myOutputPanel
的客户端ID如下所示:

myForm:myOutputPanel
第二个按钮之所以有效,是因为它位于dataTable之外,并且与表单所在的NamingContainer中的
myOutputPanel
相关。要在
过程
更新
中引用绝对clientID,可以在clientID前面加上
符号

尝试将第一个命令按钮的
update
属性更改为:

:myForm:myOutputPanel

这应该允许它绝对引用生成的clientID和work。

我收到了这个错误。找不到从“tabView:myDatatable:0:myButtonId”引用的标识符为myForm:myOutputPanel的组件。顺便说一下,这个页面在一个选项卡中,选项卡视图的id是“tabview”。我还尝试了“tabview:myOutputPanel”和“:tabview:myOutputPanel”和“:myOutputPanel”。它们都不起作用。@TurgutDsfadfa TabView也是一个NamingContainer,但它是在
ui:repeat
上构建的,因此您不能直接为此访问绝对客户端ID。您可能需要更新整个选项卡视图,或者可以使用
@form
保留值更新
myForm
中的所有元素。请尝试:myForm:TabView:myOutputPanel@jitesh谢谢,我收到了这个错误。找不到从“tabView:myDatatable:0:myButtonId”引用的标识符为myForm:myOutputPanel的组件。顺便说一下,这个页面在一个选项卡中,选项卡视图的id是“tabview”。我还尝试了“tabview:myOutputPanel”和“:tabview:myOutputPanel”和“:myOutputPanel”。它们都不起作用。@TurgutDsfadfa TabView也是一个NamingContainer,但它是在
ui:repeat
上构建的,因此您不能直接为此访问绝对客户端ID。您可能需要更新整个选项卡视图,或者可以使用
@form
保留值更新
myForm
中的所有元素。请尝试:myForm:TabView:myOutputPanel@jitesh谢谢,这很有效