var tree = $("#tree").jstree({
plugins: ['wholerow', "checkbox", "types", "sort"],
core: {
expand_selected_onload: true,//默认全部展开
data: {
url: "${ctx}/sys/role/getMenuTree",
dataType: "json"
}
},
types: {
//我自己后台传过来的数据会设置type
root: {
icon: "fa fa-tree icon-state-success icon-lg"
},
default: {
icon: "fa fa-folder icon-state-success icon-lg"
},
leaf: {
icon: "fa fa-file icon-state-warning icon-lg"
}
},
sort: function (nodea, nodeb) {//自定义排序
if (nodea.sort > nodeb.sort) {
return 1
}
return -1;
}
}).bind("loaded.jstree", function (e, data) {
data.instance.open_all();//加载完毕后展开树
var selectedNode = [];//已勾选节点的,这个也可以放到后台传递的节点里更改state{selected:true}
var menubindrole = "${menubindrole}".split(",");
for(i=0;i<menubindrole.length;i++){
if(menubindrole[i]!=null &&menubindrole[i]!='' )
{
selectedNode.push(menubindrole[i]);
}
}
data.instance.select_node(selectedNode)
// data.instance.set_icon('2',"fa fa-folder icon-state-warning")
// data.instance.select_node('2')
})
服务器端代码
@RequestMapping(value="/getMenuTree")
@ResponseBody
public String getMenuTree()
{
TreeNodeModel menuTree = sysRoleService.getMenuTree();//形成一颗树
return JSON.toJSONString(menuTree);//注意这里转换,不知道为什么直接返回json对象不可以
}
public TreeNodeModel getMenuTree()
{
List<SysMenu> menuList = sysMenuService.findAllList();
List<TreeNodeModel> nodeList = new ArrayList<>();
for(SysMenu sysMenu :menuList)
{
TreeNodeModel node = new TreeNodeModel();
node.setId(sysMenu.getId()); //nodeid
node.setText(sysMenu.getName());//display
node.setPid(sysMenu.getParentId());//pid
node.getData().put("sort",sysMenu.getSort());
nodeList.add(node);
}
TreeNodeModel root = TreeUtils.generateTreeWithRootId(nodeList,"1");
return root;
}