html如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>树</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 注意:项目正式环境请勿引用该地址 --> <link href="//unpkg.com/layui@2.7.6/dist/css/layui.css" rel="stylesheet"> </head> <style> #test9 { position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; width: 200px; height: 300px; } </style> <body> <div id="test9" class="demo-tree demo-tree-box"></div> <!-- 注意:项目正式环境请勿引用该地址 --> <script src="//unpkg.com/layui@2.7.6/dist/layui.js"></script> <script src="./js/commons.js"></script> <script src="./js/jquery-1.7.2.js"></script> <script> $.ajax({ url: baseUrl + "/freeServlet/getFreeAll", type: "post", dataType: "json", success: function (msg) { layui.use(['tree', 'util'], function () { var tree = layui.tree , layer = layui.layer , util = layui.util //模拟数据 , data = [{ title: '一级1' , id: 1 , field: 'name1' , checked: true , spread: true , children: [{ title: '二级1-1 可允许跳转' , id: 3 , field: 'name11' , href: '/' , children: [{ title: '三级1-1-3' , id: 23 , field: '' , children: [{ title: '四级1-1-3-1' , id: 24 , field: '' , children: [{ title: '五级1-1-3-1-1' , id: 30 , field: '' }, { title: '五级1-1-3-1-2' , id: 31 , field: '' }] }] }, { title: '三级1-1-1' , id: 7 , field: '' , children: [{ title: '四级1-1-1-1 可允许跳转' , id: 15 , field: '' , href: '/docs/' }] }, { title: '三级1-1-2' , id: 8 , field: '' , children: [{ title: '四级1-1-2-1' , id: 32 , field: '' }] }] }, { title: '二级1-2' , id: 4 , spread: true , children: [{ title: '三级1-2-1' , id: 9 , field: '' , disabled: true }, { title: '三级1-2-2' , id: 10 , field: '' }] }, { title: '二级1-3' , id: 20 , field: '' , children: [{ title: '三级1-3-1' , id: 21 , field: '' }, { title: '三级1-3-2' , id: 22 , field: '' }] }] }, { title: '一级2' , id: 2 , field: '' , spread: true , children: [{ title: '二级2-1' , id: 5 , field: '' , spread: true , children: [{ title: '三级2-1-1' , id: 11 , field: '' }, { title: '三级2-1-2' , id: 12 , field: '' }] }, { title: '二级2-2' , id: 6 , field: '' , children: [{ title: '三级2-2-1' , id: 13 , field: '' }, { title: '三级2-2-2' , id: 14 , field: '' , disabled: true }] }] }, { title: '一级3' , id: 16 , field: '' , children: [{ title: '二级3-1' , id: 17 , field: '' , fixed: true , children: [{ title: '三级3-1-1' , id: 18 , field: '' }, { title: '三级3-1-2' , id: 19 , field: '' }] }, { title: '二级3-2' , id: 27 , field: '' , children: [{ title: '三级3-2-1' , id: 28 , field: '' }, { title: '三级3-2-2' , id: 29 , field: '' }] }] }] //模拟数据1 , data1 = msg.data //开启节点操作图标 tree.render({ elem: '#test9' , data: data1 , edit: ['add', 'update', 'del'] //操作节点的图标 , click: function (obj) { layer.msg(JSON.stringify(obj.data)); console.log("asd" + this.edit[0]); }, operate: function (obj) { var type = obj.type; //得到操作类型:add、edit、del var data = obj.data; //得到当前节点的数据 var elem = obj.elem; //得到当前节点元素 console.log(type); console.log(data); console.log(elem); var id=""; //add if (type == "add") { $.ajax({ url: baseUrl+"/freeServlet/addFree?id="+data.id, type:"get", dataType:"json", success:function (resp){ console.log(resp); id=resp; } }) } //update if (type == "update") { $.ajax({ url: baseUrl+"/freeServlet/update?title="+data.title, type:"get", dataType:"json", success:function (resp){ alert("ajax") } }) } // if (type == "del") { $.ajax({ url: baseUrl+"/freeServlet/del?id="+data.id, type:"get", dataType:"json", success:function (resp){ alert("ajax"); } }) } } }); }); } }) </script> </body> </html>
后端代码核心:
package com.santi.servlet; import com.santi.msg.MsgResult; import com.santi.pojo.Free; import com.santi.serivce.FreeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("/freeServlet") public class FreeServlet { @Autowired private FreeService freeService; @RequestMapping("/getFreeAll") public MsgResult getFreeAll() { System.out.println("进来了"); List<Free> list = freeService.getFreeAll(); //字典map,用于后面的遍历好查找 Map<Integer, Free> nodeMap = new HashMap<>(); //转换成map,key --> id , value -->node对象 for (Free node : list) { nodeMap.put(node.getId(), node); } List<Free> result = new ArrayList<Free>(); for (Free node : list) { if (node.getPid().equals(0)) { //根目录 result.add(node); } else { //找到父节点 Free pNode = nodeMap.get(node.getPid()); List<Free> child = pNode.getChildren(); if (child == null) { child = new ArrayList<Free>(); } child.add(node); pNode.setChildren(child); } } // System.out.println(JSON.toJSONString(result)); MsgResult msgResult = new MsgResult(); msgResult.setData(result); return msgResult; } @RequestMapping("/addFree") public Integer addFree(@RequestParam(value = "id", required = false) Integer id) { if (id != null) { int i = freeService.addFreePid(id); } Free ids = freeService.getNewId(); System.out.println(id); return ids.getId(); } @GetMapping("/update") public void update(@RequestParam(value = "title", required = false) String title) { Integer integer = addFree(null); // 修改title int i = freeService.updateTitle(title, integer); System.out.println(i); } @RequestMapping("/del") public void del(@RequestParam(value = "id", required = false) String id, HttpServletRequest request) { System.out.println("我是iddel" + id); if ("undefined".equals(id)||id==null) { Integer integer = addFree(null); int i = freeService.del(integer); }else{ int i1 = Integer.parseInt(id); int i = freeService.del(i1); } } }