当用jsf primefaces onclick时,我如何制作一棵树

时间:2014-09-19 15:14:05

标签: jsf jsf-2 primefaces tree

我想在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;

1 个答案:

答案 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 

   }

}