5

I am using private TreeNode root; to create a dynamycal tree.

and I used

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

to display it in my page.

my question is how to remove the nodes that are empty (doesn't contain a child)

exemple :

node1
   child 1
   child 2
node2 
node3
  child 1

(node 2 is empty, how to remove it?)


WAS j_security_check with Spring security

How to disable remember_me feature when you are using Websphere provided j_security_check form based implementation?

4

2 に答える 2

6

まず、ツリーをループしているすべての子を取得できます。

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

それが役に立てば幸い。

よろしく。

于 2012-10-23T08:10:25.197 に答える