繁体   English   中英

如何删除一个节点

[英]how to delete a node in <p: tree of primefaces?

我正在使用private TreeNode root; 创建一个动态树。

我用过

<p:tree value="#{bean.root}" var="node">
    <p:treeNode>
        h:outputText value="#{node}" />
    </p:treeNode>
</p:tree>

将其显示在我的页面中。

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

例子:

node1
   child 1
   child 2
node2 
node3
  child 1

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

你可以先让所有孩子循环树:

List<TreeNode> nodes = this.root.getChildren();

然后你可以做这样的事情:

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();
}

这将是下一个代码的正确版本,因为我猜你不能在循环中删除集合元素。

for (TreeNode treeNode : nodes) {
   if(treeNode.isLeaf()){
       TreeNode parent = treeNode.getParent();
       parent.getChildren().remove(treeNode);
   }
}

希望能帮助到你。

问候。

我用了这个代码

dropNode.getParent().getChildren().removeIf(n -> n==dropNode);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM