Jsf 2 使用primefaces树加载数据库表

Jsf 2 使用primefaces树加载数据库表,jsf-2,treeview,primefaces,Jsf 2,Treeview,Primefaces,我有一个列为parentid、childid的数据库表。我想创建一个jsf树视图,使用primefaces树加载表数据。给出的例子是静态数据。有人能帮忙吗。我很感激。谢谢。您可以通过创建一个扩展“DefaultTreeNode”的类来创建动态TreeNode,并覆盖DefaultTreeNode方法以满足您的需要和使用正确的数据 然后通过实例化新类来创建自己的节点 您只需在bean中提供根节点(及其get方法)。您可以通过创建一个扩展“DefaultTreeNode”的类来创建动态TreeNod

我有一个列为parentid、childid的数据库表。我想创建一个jsf树视图,使用primefaces树加载表数据。给出的例子是静态数据。有人能帮忙吗。我很感激。谢谢。

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

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


您只需在bean中提供根节点(及其get方法)。

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

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

您只需在bean中提供根节点(及其get方法)。

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>  

爪哇

import java.util.Random;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.SessionScoped;
导入org.primefaces.event.NodeExpandEvent;
导入org.primefaces.model.DefaultTreeNode;
导入org.primefaces.model.TreeNode;
@ManagedBean
@会议范围
公共类DynamicTreeBean{
独活根;
公共DynamicReebean(){
root=新的DefaultTreeNode(“root”,null);
TreeNode dynamicTreeNode=新的默认TreeNode(“第一个”,根);
//
TreeNode0=新的默认TreeNode(“假”,dynamicTreeNode);
//
}  
公共树节点getRoot(){
返回根;
}
静态随机=新随机();
nodeExpand上的公共无效(NodeExpandEvent事件){
//
if(event.getTreeNode().getChildCount()==1){
event.getTreeNode().getChildren().remove(0);
}
//
//
int childrenCount=random.nextInt(9)+1;
对于(inti=0;iXHTML


爪哇

import java.util.Random;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.SessionScoped;
导入org.primefaces.event.NodeExpandEvent;
导入org.primefaces.model.DefaultTreeNode;
导入org.primefaces.model.TreeNode;
@ManagedBean
@会议范围
公共类DynamicTreeBean{
独活根;
公共DynamicReebean(){
root=新的DefaultTreeNode(“root”,null);
TreeNode dynamicTreeNode=新的默认TreeNode(“第一个”,根);
//
TreeNode0=新的默认TreeNode(“假”,dynamicTreeNode);
//
}  
公共树节点getRoot(){
返回根;
}
静态随机=新随机();
nodeExpand上的公共无效(NodeExpandEvent事件){
//
if(event.getTreeNode().getChildCount()==1){
event.getTreeNode().getChildren().remove(0);
}
//
//
int childrenCount=random.nextInt(9)+1;

对于(int i=0;i请参考该解决方案未定义第n个节点或步骤。请参考该解决方案未定义第n个节点或步骤。您能提供示例代码吗?我遇到类似问题,无法纠正。您能提供示例代码吗?我遇到类似问题,无法纠正
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>
    }
}