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

原先是打算用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. mysql5.6源码安装(转)

    mysql5.6源码安装 转自 jabbok博客园 https://www.cnblogs.com/jabbok/p/9418344.html 1 编译安装 1 2 3 4 5 6 groupadd ...

  2. 多个span标签在同一行显示

    属性设置为display:inline或display:inline-block

  3. 博途V13 仿真S7-300PLC 与HMI 的以太网通讯。实现简单功能 HMI 型号是TP900

    本项目仅完成S7-300 PLC 型号为 315-2DP/PN HMI的型号是 智慧面板TP900 通过以太网进行连接.通过网络及连接 进行组态 PLC的程序 功能一 完成电动机的启动与停机 功能二 ...

  4. SpringCloud实战——(2)通过Feign调用其他模块

    大型项目下往往有很多模块,ZCGL项目结构如下: 需要引用的其他模块已经发布成服务并在Eureka Server注册中心注册,如下: 写程序时引用了其他模块,并且其他模块在项目中,但是IDEA任然无法 ...

  5. java的浅拷贝和深拷贝(待解决)

    1.什么是浅拷贝,什么是深拷贝? 2.storm的并行度问题,需要使用全局变量static ConcorrentHashMap,因为加了static,所有的线程只能拷贝该全局变量的一个唯一的副本,进行 ...

  6. MySQL复制(一)--复制概述

    MySQL复制(replication)文档集合:1.复制概述2.基于二进制日志文件位置(binlog)配置复制3.基于全局事物标识符(GTID)配置复制4.多源复制5.级联复制6.半同步复制7.延迟 ...

  7. 修改Git的name和email

    对于git的user.name 与user.email来说,有三个地方可以设置 etc/gitconfig (几乎不常用) git config --system ~/.gitconfig(对于单个用 ...

  8. 「NOIP2009」靶形数独

    传送门 Luogu 解题思路 这题其实挺简单的. 首先要熟悉数独,我们应该要优先搜索限制条件多的行,也就是可能方案少的行,显然这样可以剪枝,然后再发挥一下dfs的基本功就可以了. 细节注意事项 爆搜题 ...

  9. Redis列表类型

    列表类型(list) 可以存储一个有序的字符串列表.常用的操作是向列表两端添加元素. 一个列表类型键最多能容纳2^32 -1个元素. 命令 向列表两端增加元素 LPUSH key value [val ...

  10. Lesson 1 Finding fossil man

    Why are legends handed down by storytellers useful? We can read of things that happend 5000 years ag ...