primefaces树节点更新问题与事件展开

时间:2018-04-19 08:58:32

标签: primefaces expand treenode

在Primefaces中,我想创建树状节点看起来像country> street>地址。但我不希望第一次获得所有信息。我使用NodeExpandEvent,我的代码:

<p:tree id="treeId" value="#{bean.root}" var="item" selectionModel="single">
  <p:ajax event="expand" listener=#{bean.onNodeExpand} update="treeId"/>
  <p:treeNode> <h:outputText value=#{item.name}/>
</p:tre>

和支持bean

//init values
public TreeNode createRoot(){
  TreeNode root = new DefaultTreeNode("root",null);
  Model model = new Model("---Select Option---",-1);// 2 properties name + value, and set label look like select one menu
  TreeNode child1 = new DefaultTreeNode(model,root);
  new DefaultTreeNode(new Model(),child1); //add new child to show expand
}

//handle event
public void onNodeExpand(NodeExpandEvent event) throws Exception{
  TreeNode currentNode = event.getTreeNode();
  Model first = (Model) cureentNode.getData(); //get model from TreeNode, name and value is ("", null)
  if(first.getName().equal("") && first.getValue() == null){
    currentNode.getChildren().clear(); //remove object earlier for expand
    for(int i=1;i<10;i++) {
       new DefaultTreeNode(new Model("Country"+i,i),currentNode);
    }
    currentNode.setExpanded(true); //importain, set expand for current node
  }
}

在浏览器中,我更新了。我希望节目看起来像

<icon-expander> ----Select Option-----
    Country1
    Country2
    ...
    Country10

但是,我只看到

Country1
Country2
...
Contry10

是什么?如果我使用selection-modelcheckbox,设定的事件是NodeSelectEvent,那就没问题。但我不想使用事件expand。请帮帮我!

0 个答案:

没有答案