ztree权限树增删改
如果是崭新崭新的像我一样接触ztree朋友,建议去看大佬的博客链接:
一、权限树展示
这三个按钮分别是 增加节点,修改节点名字,删除节点
二、程序代码
1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%String path = request.getContextPath();%>
<script type="text/javascript" src="<%=path%>/web/ztree/js/jquery-1.4.4.min.js" ></script>
<script type="text/javascript" src="<%=path%>/web/ztree/js/jquery.ztree.all.min.js" ></script>
<script src="<%=path%>/web/ztree/js/jquery.ztree.core.min.js"></script>
<script src="<%=path%>/web/ztree/js/jquery.ztree.excheck.min.js"></script>
<script src="<%=path%>/web/ztree/js/jquery.ztree.exedit.min.js"></script>
权限树
<script>
var settings = {
view: {
addHoverDom: addHoverDom, //当鼠标移动到节点上时,显示用户自定义控件
removeHoverDom: removeHoverDom, //离开节点时的操作
},
data: {
simpleData: {
enable: true, //true 、 false 分别表示 使用 、 不使用 简单数据模式
idKey: "id", //节点数据中保存唯一标识的属性名称
pIdKey: "parentId", //节点数据中保存其父节点唯一标识的属性名称
rootPId: -1 //用于修正根节点父节点数据,即 pIdKey 指定的属性值
},
key: {
name: "menuName" //zTree 节点数据保存节点名称的属性名称 默认值:"name"
}
},
check: {
enable: true, //true 、 false 分别表示 显示 、不显示 复选框或单选框
nocheckInherit: true //当父节点设置 nocheck = true 时,设置子节点是否自动继承 nocheck = true
},
edit: {
enable: true,
showRemoveBtn: true,
removeTitle: "删除节点",
renameTitle: "编辑节点名称",
showRenameBtn: true,
},
callback: {
// 回调事件
onClick: zTreeOnClick,//点击增加
beforeRemove: zTreeBeforeRemove,
onRemove: zTreeOnRemove,//移动
onRename: zTreeOnRename//修改
}
}
var zTreeObj;
$(document).ready(function(){
$.ajax({
type:"get",
url:"getMenuTestList",
async:true,
success:function(res){
zTreeObj = $.fn.zTree.init($("#treeDemo"), settings, JSON.parse(res).menulists); //初始化树
zTreeObj.expandAll(true); //true 节点全部展开、false节点收缩
}
});
});
function zTreeOnClick(event, treeId, treeNode) {
//绑定添加事件,并定义添加操作
// var newID = treeNode.id; //获取新添加的节点Id
// zTree.addNodes(treeNode, {id:newID, pId:treeNode.id, name:name}); //页面上添加节点
// var node = zTree.getNodeByParam("id", newID, null); //根据新的id找到新添加的节点
// zTree.selectNode(node); //让新添加的节点处于选中状态
//
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
//将新节点添加到数据库中
var menuName='NewNode'+Math.random().toString(36).substring(2);
$.post('saveMenuTest?parentId='+treeNode.id+'&menuName='+menuName,function (data) {
var newID = JSON.parse(data); //获取新添加的节点Id
zTree.addNodes(treeNode, {id:newID, pId:treeNode.id, menuName:menuName}); //页面上添加节点
var node = zTree.getNodeByParam("id", newID, null); //根据新的id找到新添加的节点
zTree.selectNode(node); //让新添加的节点处于选中状态
location.reload();
});
};
function addHoverDom(treeId, treeNode) {
var sObj = $("#" + treeNode.tId + "_span"); //获取节点信息
if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
var addStr = ""; //定义添加按钮
sObj.after(addStr); //加载添加按钮
};
function removeHoverDom(treeId, treeNode) {
$("#addBtn_"+treeNode.tId).unbind().remove();
};
// 编辑节点事件
function zTreeOnRename(event, treeId, treeNode) {
$.post('updateMenuTest?id=' + treeNode.id+'&menuName='+treeNode.menuName,function () {
location.reload();
});
}
// 删除之前事件
function zTreeBeforeRemove(treeId, treeNode) {
return confirm("是否确认删除?") == true;
}
// 删除节点事件
function zTreeOnRemove(event, treeId, treeNode) {
$.post('removeMenuTest?id=' + treeNode.id,function () {
location.reload();
});
}
</script>
2.sql数据
DROP TABLE IF EXISTS `menu_test`; CREATE TABLE `menu_test` ( `id` int NOT NULL AUTO_INCREMENT, `parent_id` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, `menu_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=97 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- ---------------------------- -- Records of menu_test -- ---------------------------- INSERT INTO `menu_test` VALUES ('1', '0', '系统管理'); INSERT INTO `menu_test` VALUES ('2', '1', '用户管理'); INSERT INTO `menu_test` VALUES ('3', '2', '角色管理修改'); INSERT INTO `menu_test` VALUES ('4', '1', '网站管理'); INSERT INTO `menu_test` VALUES ('5', '1', '媒体管理'); INSERT INTO `menu_test` VALUES ('6', '5', '音频管理'); INSERT INTO `menu_test` VALUES ('8', '2', '权限管理'); INSERT INTO `menu_test` VALUES ('79', '4', '餐饮管理'); INSERT INTO `menu_test` VALUES ('80', '4', '酒水管理'); INSERT INTO `menu_test` VALUES ('81', '4', '财务管理'); INSERT INTO `menu_test` VALUES ('82', '4', '未来规划'); INSERT INTO `menu_test` VALUES ('95', '1', '博客管理');
3.model
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class MenuTest { private String id; private String parentId; private String menuName; }
4.mapper
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.kanfang.dao.WoWDao"> <select id="getMenuTestList" resultType="MenuTest"> select id as id, parent_id as parentId, menu_name as menuName from menu_test select> <insert id="save" parameterType="MenuTest"> insert into menu_test(parent_id,menu_name) values(#{parentId},#{menuName}) insert> <select id="findIdByMenuTest" resultType="java.lang.String" parameterType="MenuTest"> select id from menu_test where parent_id=#{parentId} and menu_name=#{menuName} select> <update id="updatemenuName" parameterType="MenuTest"> update menu_test set menu_name=#{menuName} where id=#{id} update> <delete id="remove" parameterType="java.lang.String"> delete from menu_test where id=#{id} delete> mapper>
5,dao,service,serviceimpl
package com.kanfang.service.impl; import com.kanfang.dao.WoWDao; import com.kanfang.model.MenuTest; import com.kanfang.service.WoWService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; @Service public class WoWServiceImpl implements WoWService { @Resource private WoWDao dao; @Override public ListgetMenuTestList() { return dao.getMenuTestList(); } @Override public String findIdByMenuTest(MenuTest menutest) { return dao.findIdByMenuTest(menutest); } @Override public boolean save(MenuTest menutest) { return dao.save(menutest); } @Override public boolean updatemenuName(MenuTest menutest) { return dao.updatemenuName(menutest); } @Override public void remove(String id) { dao.remove(id); } }
package com.kanfang.dao; import com.kanfang.model.MenuTest; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface WoWDao { ListgetMenuTestList(); String findIdByMenuTest(MenuTest menutest); boolean save(MenuTest menutest); boolean updatemenuName(MenuTest menutest); void remove(String id); }
package com.kanfang.service.impl; import com.kanfang.dao.ManagerHistoryDao; import com.kanfang.model.ManagerHistory; import com.kanfang.service.ManagerHistoryService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; @Service public class ManagerHistoryServiceImpl implements ManagerHistoryService { @Resource private ManagerHistoryDao dao; @Override public boolean save(ManagerHistory managerhistory) { return dao.save(managerhistory); } @Override public Listshow() { return dao.show(); } @Override public void remove(String id) { dao.remove(id); } }
6.controller
package com.kanfang.controller; import com.alibaba.fastjson.JSON; import com.kanfang.model.MenuTest; import com.kanfang.service.WoWService; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; @Controller @Log4j2 public class WoWTree { @Resource private WoWService wowservice; @RequestMapping(value = "wow0") public String wow0(){ return "Manager/wow"; } @RequestMapping(value = "wow") public String wow(){ return "Manager/WoWTree"; } @RequestMapping("/getMenuTestList") public void getMenuTestList( HttpServletResponse response) throws IOException { response.setCharacterEncoding("utf-8");//如果不加此行,中文编码会乱码 Mapmap = new HashMap (); map.put("menulists", wowservice.getMenuTestList()); PrintWriter out = response.getWriter(); String str = JSON.toJSONString(map);//将list转化为JSON字符串 out.print(str); out.close(); } @RequestMapping("/saveMenuTest") public void saveMenuTest(String parentId,String menuName, HttpServletResponse response) throws IOException { response.setCharacterEncoding("utf-8");//如果不加此行,中文编码会乱码 MenuTest menutest=new MenuTest(); menutest.setParentId(parentId); menutest.setMenuName(menuName); wowservice.save(menutest); String id=wowservice.findIdByMenuTest(menutest); PrintWriter out = response.getWriter(); String str = JSON.toJSONString(id);//将list转化为JSON字符串 out.print(str); out.close(); } @RequestMapping("/removeMenuTest") public void removeMenuTest(String id, HttpServletResponse response) throws IOException { response.setCharacterEncoding("utf-8");//如果不加此行,中文编码会乱码 wowservice.remove(id); } @RequestMapping("/updateMenuTest") public void updateMenuTest(String id,String menuName, HttpServletResponse response) throws IOException { response.setCharacterEncoding("utf-8");//如果不加此行,中文编码会乱码 MenuTest menutest=new MenuTest(); menutest.setMenuName(menuName); menutest.setId(id); wowservice.updatemenuName(menutest); } }