私はJSF2.1でprimefaces3.3を使用しています。以下のコードには、データベースから抽出されたデータの行を含むprimeFaces dataTableがあり、ページの左側にあるツリーコンポーネントから正しくアクティブ化されています。dataTableが表示され、正しく動作します。「update」を呼び出す削除機能があり、dataTableを更新し、データベースの更新後に変更を反映します。私の問題はf:facet(id = "header")にあります。そのファセットには、dataTableに新しい行を作成するcommandLinkが含まれています。私のデータベースが正しく更新されているという意味で機能します。この後、dataTableは更新されません。dataTableを更新するには、ツリーコンポーネント(ページの左側)で別のノードをクリックしてから、元のtreeNodeに戻って、dataTableが完全に更新されていることを確認する必要があります。dataTableを動的に更新するためにコードに何を追加できますか?残念ながら、ここで試したすべての順列を追加することはできません。この問題に長い時間を費やしてきました。ご意見をいただければ幸いです。
<h:form id="formRight" >
<p:dataTable var="material" value="#{entityCrudTreeBean.materialList}" id="materials" editable="true" paginator="true" rows="10" sortBy="#{material.name}">
<p:ajax event="rowEdit" listener="#{entityCrudTreeBean.onEditRow}"/>
<f:facet id="header" name="header">
In-Cell Material Editing
<br />
<p:commandLink id="create" value="Add new material" action="#{entityCrudTreeBean.createNewMaterial}" update=":formRight"/>
</f:facet>
<p:column headerText="Name" style="width:125px">
<p:cellEditor>
...
</p:cellEditor>
</p:column>
<p:column headerText="Options" style="width:10px" >
<p:rowEditor />
<p:commandLink id="delete" action="#{entityCrudTreeBean.deleteRow(material)}" update=":formRight">
<h:graphicImage value="#{resource['icons:Delete-icon.png']}" />
</p:commandLink>
</p:column>
</p:dataTable>
</h:form>
編集:行をに変更して
<p:commandLink id="create" value="Add new material" action="#{entityCrudTreeBean.createNewMaterial}" update=":formRight:materials"/>
も機能しません編集:に変更して
<f:facet id="header" name="header">
In-Cell Material Editing
<br />
<p:commandLink id="create" value="Add new material" ajax="true" process="@this" action="#{entityCrudTreeBean.createNewMaterial}" update="@form"/>
</f:facet>
も問題は解決しません。