2014-09-19 40 views
0

我想在jsf primefaces中製作一棵樹。我想要的是,當我展開treenode時,我想採取treeNode及其所有參數(我需要id查詢)。因爲我希望它在我擴展treenode時工作。當我點擊treenode時,我將對數據庫進行查詢並提供數據。如何可能?我如何使jsf primefaces onclick做一棵樹

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

可以使用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> 

在你管理的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 

    } 

} 
+0

謝謝@Mahttias – AknKplnoglu 2014-09-22 06:52:02

+0

是有可能那onNodeExpand方法返回一個TreeNode對象?因爲我想在event.getTreeNode擴展時帶上這些子對象。 – AknKplnoglu 2014-09-22 08:20:49

+0

是的,我認爲NodeExpandEvent返回TreeNode與event.getTreeNode(); – 2014-09-22 12:24:07