【问题标题】:using primefaces tree to load database tables使用 primefaces 树加载数据库表
【发布时间】:2012-04-19 06:54:45
【问题描述】:

我有一个包含 parentid、childid 列的数据库表。我想创建一个使用 primefaces 树加载表数据的 jsf 树视图。给出的例子是静态数据。有人可以帮忙吗。我很欣赏。谢谢。

【问题讨论】:

标签: jsf-2 treeview primefaces


【解决方案1】:

XHTML

<h:form id="form">  

    <p:tree value="#{dynamicTreeBean.root}" var="node" dynamic="true" cache="true" id="tree">  
            <p:ajax event="expand" listener="#{dynamicTreeBean.onNodeExpand}" />  
        <p:treeNode>  
            <h:outputText value="#{node}"/>  
        </p:treeNode>  
    </p:tree>  

</h:form>  

Java

import java.util.Random;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import org.primefaces.event.NodeExpandEvent;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode;

@ManagedBean
@SessionScoped

public class DynamicTreeBean {  

    private TreeNode root;  

    public DynamicTreeBean() {  
        root = new DefaultTreeNode("Root", null);
        TreeNode dynamicTreeNode = new DefaultTreeNode("First", root);
      //<Add dummy node: This is to have + sign in node to be able to expand it in GUI>
        TreeNode node0 = new DefaultTreeNode("fake", dynamicTreeNode);
      //<Add dummy node>
    }  

    public TreeNode getRoot() {  
        return root;  
    }
    static Random random = new Random();
    public void onNodeExpand(NodeExpandEvent event) {  
        //<Remove dummy node>
        if(event.getTreeNode().getChildCount()==1){
            event.getTreeNode().getChildren().remove(0);
        }
        //</Remove dummy node>

        //<Generate some random children>
        int childrenCount = random.nextInt(9)+1;
        for(int i=0;i<childrenCount;i++){
            TreeNode tn = new DefaultTreeNode("-child-"+i, event.getTreeNode());

            //<Add dummy node>
            new DefaultTreeNode("fake", tn);
            //</Add dummy node>
        }
        //</Generate some random children>
    }
}  

【讨论】:

    【解决方案2】:

    您可以通过创建一个扩展“DefaultTreeNode”的类来创建动态树节点,并覆盖 DefaultTreeNode 方法以满足您的需求并使用您的正确数据。

    然后你通过实例化你的新类来创建你自己的节点。

    您只需在您的 bean 中提供 根节点(使用它的 get 方法)。

    【讨论】:

    • 你能提供一个示例代码吗?我有类似的问题,无法正确解决
    猜你喜欢
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多