一,包
<script src="${APP_PATH }/ztree/jquery.ztree.all-3.5.min.js"></script>
<link rel="stylesheet" href="${APP_PATH }/ztree/zTreeStyle.css">
二、html
<ul id="treeDemo" class="ztree"></ul>
三、js
function loadTree(){
var setting = {
view : {
addDiyDom: function(treeId, treeNode){ //第一个参数,容器的标签ID。第二个参数 :树的节点
var icoObj = $("#" + treeNode.tId + "_ico"); // tId = permissionTree_1, $("#permissionTree_1_ico")
if ( treeNode.icon ) { //字符串也可以当作boolean 判断,不是空的,则为true 执行
icoObj.removeClass("button ico_docu ico_open").addClass(treeNode.icon).css("background","");
}
}
}
};
$.ajax({
url:"${APP_PATH}/permission/loadData.do",
type:"post",
success:function(result){
if(result.success){
var zNodes = result.data ;
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
}
}
});
}
四、后端逻辑
List<Permission> perimission = permissionService.queryAllPermission();//查询出所有数据
Permission root = null;
Map<Integer,Object> allMap = new HashMap<Integer,Object>(); //map用于快速查找父节点
for (Permission permission : perimission) {
allMap.put(permission.getId(), permission);
}
for (Permission permission : perimission) { //循环给所有节点找爸爸,然后放里边
if(permission.getPid()==null){
root=permission;
}else{
Permission parent = (Permission) allMap.get(permission.getPid()); //找到这个节点父节点
parent.getChildren().add(permission);//把孩子放入爸爸的口袋
}
}
public class Permission {
private Integer id;
private Integer pid;
private String name;
private String icon;
private String url;
private ArrayList<Permission> children = new ArrayList<Permission>();
private boolean open = true;
getxxx......set.....
}