2012-10-03 55 views
3

我使用private TreeNode root;創建dynamycal樹。如何刪除<p:中的primefaces樹?

,我用

<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是空的,如何去除它)

回答

4

你可以先得到所有孩子的循環樹:

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

希望它有幫助。

問候。

相關問題