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

原先是打算用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. java基础多线程

    线程的创建 方式1:继承Java.lang.Thread类,并覆盖run() 方法 package com.demo.Thread; public class ThreadDemo01 extends ...

  2. 「Luogu P3072 [USACO13FEB]周长Perimeter」

    USACO的题目,感觉还是挺神奇的. 前置芝士 DFS(BFS)遍历:用来搜索(因为DFS好写,本文以DFS为准还不是因为作者懒) STL中的set(map)的基本用法:数据很大,不能直接存. 具体做 ...

  3. SystemVerilog Assertion 设计、调试、测试总结(3)

    上两篇主要是讲述断言的概念,基本语法,总结等等 这一篇主要是以PPT的形式展示各个场景下关于断言的应用. 为了在设计中加入断言的功能,因此需要写一个DUT.如下: `define `define fr ...

  4. sklearn调用分类算法的评价指标

    sklearn分类算法的评价指标调用#二分类问题的算法评价指标import numpy as npimport matplotlib.pyplot as pltimport pandas as pdf ...

  5. i春秋-百度杯九月场-YeserCMS(cmseasy的UpdateXML注入漏洞)

    学习了大佬们的操作才做出来,记录一次菜鸡的无能为力. tips:flag在网站根目录下的flag.php中.我们的目标就是flag.php了. 题目说是心的CMS:YeserCMS,然而百度一下,出来 ...

  6. CSP-J/S2019试题选做

    S D1T2 括号树 设\(f[u]\)表示根到\(u\)的路径上有多少子串是合法括号串.(即题目里的\(k_u\),此变量名缺乏个性,故换之) 从根向每个节点dfs,容易求出\(c[u]\):表示从 ...

  7. STM32学习笔记:为什么使用外部中断要打开syscfg时钟?

    AFIO时钟只是在STM32F1系列里被提及. 对于32F1系列,涉及到管脚的EXTI. REMAP.事件输出时就需要开启AFIO时钟. 比方上面提到的管脚REMAP,必须先开AFIO时钟.配置EXT ...

  8. 第3节 sqoop:6、sqoop的数据增量导入和数据导出

    增量导入 在实际工作当中,数据的导入,很多时候都是只需要导入增量数据即可,并不需要将表中的数据全部导入到hive或者hdfs当中去,肯定会出现重复的数据的状况,所以我们一般都是选用一些字段进行增量的导 ...

  9. MongoDB 监控指标

    MongoDB uptime 启动时长 asserts.user 用户的断言数量 asserts.warning 警告的断言数量 connections.current 当前的连接数 大于 650co ...

  10. 009.Delphi插件之QPlugins,服务的热插拔

    这个DEMO用来演示服务的替换,用起来总是怪怪的感觉,效果图如下 代码如下 unit Frm_Main; interface uses Winapi.Windows, Winapi.Messages, ...