私はプライムフェイスに非常に慣れていません。ツリーテーブルを作成し、すべてのアイテムをデータベースから取得します。私の問題は、子アイテムを選択すると、実際に選択されたのは親アイテムであるため、子アイテムを操作できないことです。ここに私のツリーテーブルコードがあります
<p:treeTable id="treeTable" value="#{aZoningController.root}" var="zonning" >
<p:column style="text-align: left; width: 93%">
<f:facet name="header">
#{lbl.aZoning_pokok}
</f:facet>
<h:outputText value="#{zonning.nama}" />
</p:column>
<p:column style="text-align: center; width: 5%">
<f:facet name="header">
#{lbl.aZoning_kod}
</f:facet>
<h:outputText value="#{zonning.kod}" />
</p:column>
<p:column style="vertical-align: text-top">
<p:menuButton value="" styleClass="mb">
<p:menuitem value="Update" oncomplete="confirmation.show()" process="@this" update=":actionForm:actionDialog" icon="ui-icon-document-b">
<f:setPropertyActionListener value="#{zonning}" target="#{aZoningController.selectedNode}" />
</p:menuitem>
<p:menuitem value="Delete" oncomplete="confirmation.show()" process="@this" update=":myform:confirmDialog" icon="ui-icon-trash">
<f:setPropertyActionListener value="#{zonning}" target="#{aZoningController.selectedNode}" />
</p:menuitem>
</p:menuButton>
</p:column>
</p:treeTable>
そして、私はこれを使用してトレタブルを移入しています
public TreeNode getRoot() {
root = new DefaultTreeNode("Root", null);
List<aZoning> zon = ejbFacade.getRoot();
for (aZoning z : zon) {
TreeNode zonning = new DefaultTreeNode(z, root);
createNode(z.getId(), zonning);
}
return root;
}
private TreeNode createNode (String idParent, TreeNode parent) {
TreeNode node = null;
List<aZoning> zonning = ejbFacade.getZonning(idParent);
for (aZoning z : zonning) {
node = new DefaultTreeNode(z, parent);
createNode(z.getId(), node);
}
return node;
}
私に助言してください