在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-model
是checkbox
,设定的事件是NodeSelectEvent
,那就没问题。但我不想使用事件expand
。请帮帮我!