使用jsf primefaces单击时如何生成树

使用jsf primefaces单击时如何生成树,jsf,jsf-2,primefaces,tree,Jsf,Jsf 2,Primefaces,Tree,我想在jsf primefaces中创建一棵树。我想要的是,当我展开treenode时,我想获取treenode及其所有参数(我需要查询的id)。因为我希望它在我展开treenode时工作。当我单击treenode时,我将对数据库进行查询并带来数据。这怎么可能 // for example: Fider fider=new Fider(); //i dont know how i can take selected treenode's object(fiderUtil)'

我想在jsf primefaces中创建一棵树。我想要的是,当我展开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;
//例如:
Fider-Fider=新的Fider();
//我不知道如何获取选定treenode对象(fiderUtil)的id
fider.setId(selectedfidrid);/?
List-fiders=fiderepo.find(fider);
对于(Fider-Fider:fiders)
TreeNode TreeNode=新的默认TreeNode(新的FiderUtil(fider.name(),fider.id()),selectedTreeNode);
返回树节点;

您可以使用ajax扩展事件:

在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>

onNodeExpand方法是否可能返回TreeNode对象?因为我想在event.getTreeNode展开时带上子对象。是的,我认为NodeExpandEvent返回带有event.getTreeNode()的TreeNode;那么,如何使所有树节点默认可扩展?@Mahttias SchrebiérI认为每个树节点都有一个
扩展的
属性。如果将其设置为“true”,则节点应显示为展开。我不确定是否有可能默认扩展所有。在最坏的情况下,您必须在初始化树时迭代树节点或设置扩展属性。设置属性后是否更新了孔树?目前我无法测试你的问题,所以我只能给你一些建议。
@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 

   }

}