treetable是jquery的树表控件,如:
treeTable 静态测试
效果如下:
难点在于拼装出理想的数据结构来适应前端的展示。下面模拟从数据库查询出结果并拼装出treetable数据结构的过程(需运用到递归):
package com.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
/**
* map1
* |----map3
* |----map6
* |----map4
* map2
* |----map5
*/
public static void main(String[] args) {
//模拟查询库然后组装成树的结构
List list = new ArrayList();
Map map1 = new HashMap();
map1.put("id", "1");
map1.put("parent_id", "0");
list.add(map1);
Map map2 = new HashMap();
map2.put("id", "2");
map2.put("parent_id", "0");
list.add(map2);
Map map3 = new HashMap();
map3.put("id", "3");
map3.put("parent_id", "1");
list.add(map3);
Map map4 = new HashMap();
map4.put("id", "4");
map4.put("parent_id", "1");
list.add(map4);
Map map5 = new HashMap();
map5.put("id", "5");
map5.put("parent_id", "2");
list.add(map5);
Map map6 = new HashMap();
map6.put("id", "6");
map6.put("parent_id", "3");
list.add(map6);
List list1 = new ArrayList();
List> trees = new ArrayList>();
for (Map map : list) {
Map tree = new HashMap();
if (map.get("parent_id").equals("0")) {
map.put("text", map.get("id"));
map.put("parent_text", "0");
tree.put("id_text", (String)map.get("id"));
tree.put("parent_text", "0");
trees.add(tree);
list1.add(map);
List trees2 = getTreeData(trees, list, map);
map.put("list", trees2);
}
}
// for (Map map : list1) {
//
// }
System.out.println(list1);
System.out.println("trees:" + trees);
}
private static List getTreeData(List> trees, List list, Map maps) {
List list5 = new ArrayList();
for (Map map : list) {
if (maps.get("id").equals(map.get("parent_id"))) {
map.put("text", maps.get("text") + "_" + map.get("id"));
map.put("parent_text", maps.get("text"));
list5.add(map);
Map tree = new HashMap();
tree.put("id_text", maps.get("text") + "_" + map.get("id"));
tree.put("parent_text", (String)maps.get("text"));
trees.add(tree);
map.put("list", getTreeData(trees, list, map));
}
}
return list5;
}
public static String print(String name) {
return "Hi, " + name;
}
}
运行结果:
[{id=1, text=1, list=[{id=3, text=1_3, list=[{id=6, text=1_3_6, list=[], parent_text=1_3, parent_id=3}], parent_text=1, parent_id=1}, {id=4, text=1_4, list=[], parent_text=1, parent_id=1}], parent_text=0, parent_id=0}, {id=2, text=2, list=[{id=5, text=2_5, list=[], parent_text=2, parent_id=2}], parent_text=0, parent_id=0}]
trees:[{id_text=1, parent_text=0}, {id_text=1_3, parent_text=1}, {id_text=1_3_6, parent_text=1_3}, {id_text=1_4, parent_text=1}, {id_text=2, parent_text=0}, {id_text=2_5, parent_text=2}]