1

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>
4

1 に答える 1

1

これは、 withprocessおよびがコンポーネントの属性and doupdateとほぼ同じように機能するためです。コンポーネントが同じ 内に存在する場合にのみ、コンポーネントの id を直接参照できます。f:ajaxexecuterenderNamingContainer

clientID は:、デフォルトで区切られた名前付けコンテナー ID のプレフィックスを付けることによって生成されます。p:panelコンポーネントは実装されていませんが、実装さNamingContainerれてh:formp:dataTableますNamingContainer

の clientIDmyOutputPanelは次のとおりです。

myForm:myOutputPanel

2 番目のボタンは、dataTable の外側にありmyOutputPanel、フォームである同じ NamingContainer に関連しているため機能します。processまたはで絶対 clientID を参照するにはupdate、clientID の前に:記号を付けることができます。

update最初の commandButton の属性を次のように変更してみてください。

:myForm:myOutputPanel

これにより、生成された clientID を完全に参照して動作できるようになります。

于 2013-05-03T12:19:47.843 に答える