3

Primefaces TreeTable 节点似乎以相反的方式工作。

你创建了一个父母,然后你创建了一个孩子,然后你告诉孩子它属于哪个父母。父母应该了解他们的孩子,而不是相反。

所以......我的问题是:

我需要从我的数据库(祖父母、父母、孩子和孙子)中加载未定义的数据量。

如何动态地将它们加载到 TreeTable 中?我想不出在我的 for-each 中创建 TreeNodes 并设置它的父母的方法。

任何人都可以给我和想法?

4

1 回答 1

1

我还没有测试过这个解决方案,但我认为它应该可以工作。primefaces 展示中的示例都是硬编码的。要使其动态化,您必须使用数组。
例如下面的硬编码代码部分:

 TreeNode documents = new DefaultTreeNode(new Document("Documents", "-", "Folder"), root);  
 TreeNode pictures = new DefaultTreeNode(new Document("Pictures", "-", "Folder"), root);  
 TreeNode music = new DefaultTreeNode(new Document("Music", "-", "Folder"), root);

可以替换为:

 Map<String, TreeNode> rootNodes = new HashMap<String, TreeNode>();

 //Retrieve the list of root Nodes. eg Tables in the database.
 for(Table table : databaseTables){

    //table.getTableName() will be the name of the node, it could be something like "music" or "documents"
    rootNodes.add(table.getTableName(), new DefaultTreeNode(table.getTableName(), new Document......, root);
 }

我将它们添加到地图的原因是,如果您想引用它们,可以使用密钥作为参考。现在如果您想将节点添加到图片节点,例如

 //Create a new map
 Map<String, TreeNode> pictureNodes = new HashMap<String, TreeNode>();

 //now loop through your picture objects
for(picture : pictures){
    pictureNode.add(new DefaultTreeNode(picture.getName(), ......., root.get("pictures"));
}

使用此方法,您可以递归循环尽可能多的层次结构。我无法测试这段代码(只是记事本++),因为我目前在办公室。但是试试看,如果你仍然卡住,我可以在几个小时后回家后做一些更详细的事情。

于 2012-09-04T13:34:15.300 回答