最近要做一个有关权限的东西,原理和数据库都已经知道了,就是树状图困难。

原先是打算用layui的,因为我孤陋寡闻……吃了大亏,弄了3个小时,屁都没有。只能说是……

后来百度找到了zTree,进去学习了段时间,只能说不是一般的友好,非常好用。但还是学习了一早上,勉强有点收获。

为了明显一些,我特地设置了不和官方默认数据一样的结构。

CREATE TABLE uri(
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '编号',
uri_name VARCHAR(10) NOT NULL COMMENT 'uri的概述',
is_have_superiors TINYINT NOT NULL COMMENT '是否有上级',
superiors_id BIGINT UNSIGNED NOT NULL COMMENT '上级uri的id',
uri VARCHAR(100) NOT NULL COMMENT 'uri地址'
) COMMENT 'uri描述表';

实体类:

import lombok.Data;

import java.math.BigInteger;
@Data
public class UriEntity { private BigInteger id;
private String uriName;
private Integer haveSuperiors;
private BigInteger superiorsId;
private String uri;
}

controller方法:dao层和service以及mybatis文件我就不上了,看方法名应该就知道是什么了

  
  // 我设置了全局跨域的
  @PostMapping("/uris")
public ResponseDTO getUrisByPid(BigInteger superiorsId) {
UriEntity uriById = uriService.getUriById(superiorsId);
return new ResponseDTO("200", "success", uriById);
}

html文件:其中要注意的一点,我看官方api上面写的dataFilter: ajaxDataFilter是在rollback这里面的,但是不知道为什么不行,后来百度看到了async里面

<!DOCTYPE HTML>
<HTML>
<HEAD>
<TITLE> ZTREE DEMO </TITLE>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link href="css/zTreeStyle/zTreeStyle.css" rel="stylesheet"/>
<!-- 分别导入jquery,zTree的两个js文件,其中excheck是显示复选框一定要有的 -->
<script type="text/javascript" src="js/jquery-3.4.1.js"></script>
<script type="text/javascript" src="js/jquery.ztree.core.js"></script>
<script type="text/javascript" src="js/jquery.ztree.excheck.js"></script>
</head>
<BODY>
<div>
<ul id="treeDemo" class="ztree"></ul>
<input id="btn1" value="获取选中节点id" type="button"/>
</div>
<script>
var zTreeObj;
function ajaxDataFilter(treeId,parentNode,responseData) {
return responseData.data;
}
var setting = {
// 开启复选框,其他不写就都是默认
check: {
enable: true
},
// name:"uriName"和取别名差不多
data: {
key:{
name:"uriName"
},
// 开启简单数据,其他默认
// idKey:"id",pIdKey:"superiorsId"也差不多是取别名
simpleData: {
enable: true,
idKey: "id",
pIdKey: "superiorsId",
rootPId: 0
}
},
// 开启异步加载
async: {
enable: true,
url: "http://127.0.0.1:8081/uris",
type: "post",
// 官方api说的用text可以满足大部分需求,但是json也行
dataType: "text",
// 请求参数,这里是通过superiorsId查询到其下的子uri
autoParam: ["id=superiorsId"],
// 过滤数据,因为返回的是ResponseDTO,其中除了要用到的data还有其他code,msg用不到的东西
// ajaxDataFilter后面不用加()和参数,可能是因为里面的都是默认的东西吧
dataFilter: ajaxDataFilter
}
};
// 初始的节点,必须设置为父节点,因为 异步加载 只对 + 起作用,而要有 + 则必须是父节点
var zNodes=[
{"id":1,"superiorsId":0,"uriName":"删除操作",isParent:true}
];
// 构造出树结构
$(document).ready(function(){
zTreeObj = $.fn.zTree.init($("#treeDemo"),setting,zNodes)
});
// 点击按钮后获取选中的数据
$("#btn1").on("click", function(){
var treeObj=$.fn.zTree.getZTreeObj("treeDemo"),
nodes=treeObj.getCheckedNodes(true),
v="";
for(var i=0;i<nodes.length;i++){
v+=nodes[i].uriName+",";
console.log("节点id:"+nodes[i].id+"节点名称"+v);
}
})
</script>
</BODY>
</HTML>

zTree的学习的更多相关文章

  1. DHTMLTree、Dtree和Ztree的学习使用

    一.DHTMLTree是树菜单,允许我们快速开发界面优美,基于Ajax的javascript库.她允许在线编辑,拖拽,三种状态(全选.不选.半选),复选框等模式.同时在加载大数据量的时候,仍然可以保持 ...

  2. ztree学习笔记(一)

    在项目当中,经常会用到ztree树形插件,之前做的几个项目当中都用到了这个插件,感觉功能还是很强大的,而且在网上还找到了中文的API,因为项目中的树形结构不是自己做的,所以现在从头学习一下,并且记录一 ...

  3. zTree学习实例

    今天做完一个zTree的实例,供有需要的学习! 效果图如下:

  4. JAVAEE——BOS物流项目02:学习计划、动态添加选项卡、ztree、项目底层代码构建

    1 学习计划 1.jQuery easyUI中动态添加选项卡 2.jquery ztree插件使用 n 下载ztree n 基于标准json数据构造ztree n 基于简单json数据构造ztree( ...

  5. zTree 学习笔记之(一)

    zTree 学习笔记之(一) 简介 zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 到底有哪些具体的优点,可以参见官网 ...

  6. [译]聊聊C#中的泛型的使用(新手勿入) Seaching TreeVIew WPF 可编辑树Ztree的使用(包括对后台数据库的增删改查) 字段和属性的区别 C# 遍历Dictionary并修改其中的Value 学习笔记——异步 程序员常说的「哈希表」是个什么鬼?

    [译]聊聊C#中的泛型的使用(新手勿入)   写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发 ...

  7. zTree学习

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. zTree学习文档和DEOM

    http://tool.oschina.net/apidocs/apidoc?api=ztree3.2%2Fapi%2FAPI_cn.html zTree的API http://www.ztree.m ...

  9. ztree学习之异步加载节点(一)

    ztreedemo.jsp: <%@ page language="java" import="java.util.*" pageEncoding=&qu ...

随机推荐

  1. Linux 运维常用命令

    参考: https://segmentfault.com/a/1190000009745139 http://blog.51cto.com/xuqq999/774714 .查看有多少个IP访问: aw ...

  2. android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法

    这里介绍微信和新浪登录.微信登录和新浪登录都需要申请第三方账号.可以参考官方文档http://dev.umeng.com/social/android/operation#2还是很清晰的. 新浪微博开 ...

  3. ROS学习笔记8-rqt_console和roslaunch

    本教程来自于:http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch rqt_console 和 rqt_logger_level 是ro ...

  4. JS 函数创建、封装、调用

    一.简单函数创建.封装 第三种就是构造函数 function fun(a,b){ this.firstName=a this.lastName=b } var x=new myFun(Jhon,Dav ...

  5. [经验] Cocos Creator使用笔记 --- 调用不同脚本下的函数

    因为 JavaScript 不同于 Java, 想要调用不同文件的函数的话不能直接 ClassName object = new ClassName(); object.function(param) ...

  6. Golang基础之文件操作

    目录 文件读取 os.open文件读取 os.open循环读取 bufio文件读取 bufio循环读取 ioutil读取整个文件 文件写入 os.OpenFile文件写入 bufio.NewWrite ...

  7. WIN2008中部署网站后样式及JS加载不了(转载)

    今天在一台刚刚装好的WIN2008上部署一个问题,一切按流程来:① 控制面板加IIS,把.NET 3.5打勾② 装.NET 4.0框架③ 装MSSQL2012④ IIS中部署网站⑤ 修改web.con ...

  8. SCHema学习

    <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http:/ ...

  9. 第1课 VMware的NSX全面落地软件定义网络SDN

    SDN的定义: 即软件定义网络(Software Defined Network)的缩写,它是一种基于网络架构的创新,一种在已存在物理传输网络之上的抽象形态,它是一种体系结构,它是众多网络虚拟化技术中 ...

  10. 怎样管理Exchange Server 2013资源邮箱

    1. exchange资源邮箱介绍 这次将介绍Exchange Server 2013的资源邮箱相关内容. Exchange Server 2013的资源邮箱包含两类,其一为“会议室邮箱”,另一类是“ ...