Primefaces TreeTable节点似乎以相反的方式工作。
您创建一个父项,然后创建一个孩子,而不是告诉孩子它属于哪个父项。父母应该了解自己的孩子,而不是其他方式。
所以...我的问题是:
我需要从我的数据库(祖父母,父母,孩子和大孩子)加载未定义的大量数据。
如何将它们加载到TreeTable中?我无法想到在我的for-each中创建TreeNodes并设置它的父母的方式。
任何人都可以给我和想法吗?
答案 0 :(得分: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);
}
我将它们添加到地图的原因是,如果要引用它们,可以使用该键作为参考。 now如果要将节点添加到图片节点,例如
//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"));
}
使用此方法,您可以递归循环遍历尽可能多的层次结构。我无法测试这段代码(只是记事本++),因为我现在在办公室。但是尝试一下,如果你仍然卡住我几个小时后回家的时候可以做更详细的事情。