zTree
zTree是中国人写的非常强大的一个”树”,下面介绍一种非常经典的多级目录勾选树。
zTree
生成一个多级目录的勾选树:
基于角色模块分配,两个表是多对多的关系。
把相关的js,css引入进来
在要用zTree的地方引进这些样式跟js
|
|
进入到模块分配页面
|
|
配置页面
|
|
使用ajax从服务器端接受数据生成对应的树
|
|
服务器传过来的数据
为了加载zTree树上的结点,zTree树上结点的数据结构:12 [{"id":"编号","pId":"父结点的编号","name":"结点名称","checked":"true|false"}, {"id":"编号","pId":"父结点的编号","name":"结点名称","checked":"true|false"}]
- 使用什么技术来生成这样json串
- JSON-lib FastJSON GSON 自己手动拼接
- 其实自己拼接是最方便的因为可以,实现在拼接的时候能够实现自己需要的业务
|
|
使FastJson转换Json,使用的时候在所有的工具中速度最快(效率没有上面的快,因为需要创建很多对象,跟遍历集合)
- list—->数组
- map—–>键值对123456789101112131415List<Map<String,object>> list = new ArrayList<Map<String,object>>();for(Module module : moduleList){Map<String,object> maps=new Map<String,object>();maps.put("id",module.getId());maps.put("pId",module.getParentId());maps.put("name",module.getName());boolean flag= false;if(moduleSet.contains(module)){flag=true;}maps.put("ckecked",flag);list.add(maps);}String jsonStr = Json.toJSONString(list);
FastJson中
- 对象转String用toJSONString
- 字符串转Json用Parse
根据服务器端的数据获取所被选择的节点
|
|
实现模块分配
|
|
- 每一个数据类型都有自己的mime的文件类型:
- json是:
application/json
,Tomcat会在web.xml中校验mime类型 - 所以需要设置编码:
response.setContentType("application/json;charset=UTF-8");
- 设置响应消息头,没有缓存
response.setHeader(Cache-Control,)
- json是:
注:
Ztree可以通过setting的callback属性添加事件
1234var setting = {callback:{onClick:function(){}}}Ztree树的容器class必须是
ztree
Ztree树容器是
<li>
也可以接受一个text数值在转成json
zTree的加载过程: