我正在使用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为空,如何删除它?)
答案 0 :(得分:5)
您可以先让所有孩子循环树:
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);
}
}
希望它有所帮助。
问候。