2

私のページには次のコンポーネントツリーがあります

form
    tabView
        datatable
        dialog

次に、データテーブルで行が選択されたときにダイアログコンポーネントを更新します。

私は次のようなことを試しました:

<p:ajax event="rowSelect" update="@parent:detailsView" oncomplete="detailsViewDialog.show()" />

ここで、detailsViewは、p:dialog内のpanelGroupのIDです。

update = "@ parent"のみが機能しますが、ダイアログを表示するためだけに常にテーブル全体をリロードすることは解決策ではありません。

誰かが私にヒントを与えることができますか?

よろしく、フロリアン

4

1 に答える 1

4

データテーブルはそれ自体がNamingContainerコンポーネントであるため、相対的なクライアントIDを使用するのは困難です。基本的に、絶対クライアントIDを指定する必要があります。

<p:ajax ... update=":formId:tabViewId:detailsView" />

UIComponentまたは、属性ごとにIDdetailsViewを使用してビューにバインドし、属性で使用することもできbindingます。UIComponent#getClientId()update

<p:ajax ... update=":#{detailsView.clientId}" />
...
<h:panelGroup id="detailsView" binding="#{detailsView}">
于 2013-01-06T15:29:58.117 に答える