Primefaces TreeTable 节点似乎以相反的方式工作。
你创建了一个父母,然后你创建了一个孩子,然后你告诉孩子它属于哪个父母。父母应该了解他们的孩子,而不是相反。
所以......我的问题是:
我需要从我的数据库(祖父母、父母、孩子和孙子)中加载未定义的数据量。
如何动态地将它们加载到 TreeTable 中?我想不出在我的 for-each 中创建 TreeNodes 并设置它的父母的方法。
任何人都可以给我和想法?
Primefaces TreeTable 节点似乎以相反的方式工作。
你创建了一个父母,然后你创建了一个孩子,然后你告诉孩子它属于哪个父母。父母应该了解他们的孩子,而不是相反。
所以......我的问题是:
我需要从我的数据库(祖父母、父母、孩子和孙子)中加载未定义的数据量。
如何动态地将它们加载到 TreeTable 中?我想不出在我的 for-each 中创建 TreeNodes 并设置它的父母的方法。
任何人都可以给我和想法?
我还没有测试过这个解决方案,但我认为它应该可以工作。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"));
}
使用此方法,您可以递归循环尽可能多的层次结构。我无法测试这段代码(只是记事本++),因为我目前在办公室。但是试试看,如果你仍然卡住,我可以在几个小时后回家后做一些更详细的事情。