我想在jsf primeface中创建一个树。我想要的是,当我展开treenode时,我想采取treeNode及其所有参数(我需要查询的id)。因为我希望它能够工作当我扩展了一个treenode。当我点击treenode时,我会对数据库进行查询并带来数据。怎么可能?
// for example:
Fider fider=new Fider();
//i dont know how i can take selected treenode's object(fiderUtil)'s id
fider.setId(selectedfiderId);//?
List<Fider> fiders=fiderrepo.find(fider);
for(Fider fider:fiders )
TreeNode treeNode=new DefaultTreeNode(new FiderUtil(fider.name(), fider.id()),selectedTreeNode);
return treeNode;
答案 0 :(得分:1)
您可以使用ajax expand事件:
在您的JSF页面中:
<p:tree id="tree" value="#{yourManagedBean.root}" var="node">
<p:ajax event="expand" listener="#{yourManagedBean.onNodeExpand}" />
<p:treeNode>
<h:outputText value="#{node.label}">
</p:treeNode>
</p:tree>
在托管bean中:
@ManagedBean
@ViewScoped
public class YourManagedBean {
private TreeNode root;
public YourManagedBean() {
}
@PostConstruct
public void init() {
root = loadTreeData(); // Fill your Tree with data
}
public void setRoot(TreeNode root) {
this.root = root;
}
public TreeNode getRoot() {
return root;
}
public void onNodeExpand(NodeExpandEvent event) {
YourObject object = (YourObject) event.getTreeNode().getData();
//Now make your database query
}
}