如何删除<p:素面树中的节点?

Kar*_*ara 4 java primefaces

private TreeNode root;用来创建动态树。

我用了

<p:tree value="#{bean.root}" var="node">
    <p:treeNode>
        h:outputText value="#{node}" />
    </p:treeNode>
</p:tree>
Run Code Online (Sandbox Code Playgroud)

显示在我的页面中

我的问题是如何删除空的节点(不包含子节点)

例子:

node1
   child 1
   child 2
node2 
node3
  child 1
Run Code Online (Sandbox Code Playgroud)

(节点2为空,如何将其删除?)

dca*_*lap 5

您可以首先让所有的孩子都在树上循环:

List<TreeNode> nodes = this.root.getChildren();
Run Code Online (Sandbox Code Playgroud)

然后,您可以执行以下操作:

List<TreeNode> nodes = ....
Iterator<TreeNode> i = nodes.iterator();
while (i.hasNext()) {
   TreeNode = i.next(); 
   // Use isLeaf() method to check doesn't have childs.
   i.remove();
}
Run Code Online (Sandbox Code Playgroud)

这将是下一个代码的正确版本,因为我想您无法在循环中删除集合元素。

for (TreeNode treeNode : nodes) {
   if(treeNode.isLeaf()){
       TreeNode parent = treeNode.getParent();
       parent.getChildren().remove(treeNode);
   }
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。

问候。