插件使用一树形插件---zTree一zTree异步加载
zTree 可以实现异步加载。异步加载可以让初次加载速度快,带来好的用户体验。
异步加载 官方源码中的demo提示了例子。例子是采用php语言。
在java语言中,zTree如何与Servlet结合呢?
下面这个Demo演示了Servlet + Gson + MySQL 实现异步加载。
第一步,引入css和js,参考一上节《zTree》
第二步,修改ztree初始方法如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
var setting = { data : { simpleData : { enable : true } }, async : { enable : true, url : "console/treeAjaxAsyncLoad.do", autoParam : [ "id=id" ], dataFilter : filter }};function filter(treeId, parentNode, childNodes) { if (!childNodes) return null; for (var i = 0, l = childNodes.length; i < l; i++) { childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.'); } return childNodes;}$(document).ready(function() { $.fn.zTree.init($("#treeDemo"), setting);}); |
关键代码在7~12行,配置异步加载功能,传递一个参数id给控制器treeAjaxAsyncLoad.do,控制器控制id查找所以子节点(直属子节点,孙子节点就没查找)
第三步,控制器
代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.mysql.jdbc.StringUtils;import dao.ArticleDao;import util.JsonUtils;/** * Servlet implementation class UserAjaxValidatingUser */@WebServlet("/console/treeAjaxAsyncLoad.do")public class TreeAjaxAsyncLoad extends HttpServlet { private static final long serialVersionUID = 1246470631076856023L; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String pId = request.getParameter("id"); ArticleDao dao = new ArticleDao(); if (StringUtils.isNullOrEmpty(pId)) { JsonUtils.printJson(response, dao.getRootClassify()); } else { JsonUtils.printJson(response, dao.getTrees(Integer.parseInt(pId))); } }} |
这部分代码是根据前端传递的参数,来查询子节点,并转换成json格式响应给前端。
JsonUtils.printJson()方法是将数据生成json格式。
代码如下:
|
1
2
3
4
5
6
7
8
9
|
public static void printJson(HttpServletResponse response, Object obj) throws IOException { // 返回数据,返回数据类型是json response.setContentType("application/json"); // 返回数据编码UTF-8 response.setCharacterEncoding("UTF-8"); // 返回数据,通过gson将数据返回给Ajax 通过gson工具提高工作效率 response.getWriter().write(new Gson().toJson(obj));} |
第四步,数据访问层两个关键方法:
方法一:
|
1
2
3
4
5
6
7
8
9
10
|
@SuppressWarnings("unchecked")public List<ArticleTree> getClassify(int id) { String sql = "SELECT id,pId,title as name FROM article where pId=?;"; List<ArticleTree> list = JdbcUtils.getListBean(sql, ArticleTree.class, new Object[] { id }); for (ArticleTree at : list) { at.setParent(isParent(at.getId())); } return list;} |
从数据库里查询数据封装成树结构对象。代码的第6~8行,设置是否为父节点,如果是父节点,在html上显示是一个文件夹,前面有加号,还可以展开,如果不是,在html上显示是一个文件且不可以展开。
方法二:
|
1
2
3
4
5
6
7
8
9
10
11
|
@SuppressWarnings("unchecked")public List<ArticleTreeUrl> getTrees(int id) { String sql = "SELECT id,pId,title as name FROM article where pId=?;"; List<ArticleTreeUrl> list = JdbcUtils.getListBean(sql, ArticleTreeUrl.class, new Object[] { id }); for (ArticleTreeUrl at : list) { at.setParent(isParent(at.getId())); at.setUrl("console/article.jsp?id=" + at.getId()); at.setTarget("_blank"); } return list;} |
方法二和方法一样,都从数据库里查询数据封装成树结构对象。不同的是带查询参数,查找的是子节点。
本示例数据访问层使用apache的dbutils,读者根据自己的情况(原生JDBC、Spring JDBC、mybatis、Spring Data JPA)调整。
并且设置ztree的url。
ArticleTree和ArticleTreeUrl数据模型如下:
|
1
2
3
4
5
6
7
8
9
|
public class ArticleTree { private int id; private int pId; private String name; private int ParentFlags; boolean isParent; // 省略构造函数 访问器和修改器 |
|
1
2
3
4
5
6
7
8
9
10
11
|
public class ArticleTreeUrl { private int id; private int pId; private String name; private int ParentFlags; boolean isParent; private String url; private String target; // 省略构造函数 访问器和修改器 |
插件使用一树形插件---zTree一zTree异步加载的更多相关文章
- ztree学习之异步加载节点(一)
ztreedemo.jsp: <%@ page language="java" import="java.util.*" pageEncoding=&qu ...
- 后台返回平铺数据,如何转换成树形json并渲染树形结构,ant tree 异步加载
如何后台返回对象数组(平铺式) 1.根据字段标识(板块)获取根节点 ### initTreeData(dataOrg){ var resultArr=dataOrg[0] var secArr=[]; ...
- ztree异步加载---------补发周日内容
上周六老师要求和大三的进行JAVA知识交流,总体来说就是给大三学长做的东西打分,然后大三学长再教我们如果构建ztree.毕竟第一次接触ztree,所以有很多不了解,但通过周六日努力,还是做出来了.现在 ...
- Jquery Ztree异步加载树
1. 下载jquery的JS文件/ztree的CSS文件和JS文件 https://jquery.com/download/ https://gitee.com/zTree/zTree_v3/tree ...
- ztree插件异步加载 使用RESTEasy报错 Only resource methods using @FormParam will work as expected. Resource methods consuming the request body by other means will not work as expected.
在使用ztree插件实现异步加载时遇到后台RESTEasy接收参数问题,查看后台报错: A servlet request to the URI http://localhost:8080/area/ ...
- ztree插件的使用及列表项拖拽的实现(jQuery)+异步加载节点数据
为了实现如图所示的树状结构图,并使列表项可拖动到盒子里,研究了ztree这个插件的使用,并仔细研究了列表项的拖动事件.完成了预期需求,对jQuery的运用得到了提高.这个插件的功能非常强大,除了基本的 ...
- 使用jOrgChart插件, 异步加载生成组织架构图
jOrgChart插件是一个用来实现组织结构图的Jquery的插件- 一.特点 1.支持拖拽修改子节点: 2.支持节点缩放展示: 3.方便修改css定义样式: 4.超轻量型: 5.兼容性好,基本支持所 ...
- Ztree异步加载自动展开节点
在Ztree的官网Demo中,有自动展开的例子,是通过设置节点属性open:true来实现自动展开的,但是在异步加载中,这个属性设置为true也不会自动展开,因为open:true是指在有子节点的情况 ...
- JQuery ztree 异步加载实践
本来要做一个文件目录浏览界面,需要遍历所有的文件和目录,很显然一次性读取时很费时费力的一件事情. 因此就需要做异步加载.... 不过网上的几篇帖子还挺坑的!原始参考:JQuery异步加载实例,相对来说 ...
随机推荐
- excel打开csv格式的文件,数字末尾都变成零,解决方式
excel打开csv格式的文件,数字末尾都变成零,解决方式
- PL/SQL 加字段 修改数据库之后 之后记得保存脚本
- sorter函数参数设置
python内置sorted函数排完序生成一个新列表,而列表list.sorted则是直接在原列表上修改 sorted默认排序是正序,即从小到大. 若想倒着排序,则reverse=True 当需要排序 ...
- 【转】HTTP
[转]HTTP 一.http概述 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTT ...
- CreateDialog和DialogBox
原文地址:https://blog.csdn.net/aikker/article/details/5631412 INT_PTR DialogBox( HINSTANCE hIns ...
- 剖析epoll机制
剖析epoll机制 Linux epoll机制; 写这篇文章的原因是, 上次百度面试被问到一个事件怎么添加到epoll的双向链表中的; 这个问题比较深入, 涉及到内核的实现问题, 今天就来理解一下; ...
- Centos 7 安装Docker-ce记录
以前尝试过在centos 6上安装Docker , 需要升级内核,支持aufs,比较麻烦:在使用过程中出现过Docker挂掉的情况,官方建议在64 位 centos 7 上运行,本文将安装步骤记录下来 ...
- jetty去掉项目名称访问
对于web项目,访问路径是否包含项目名称等修改访问路径的配置方式: 我所使用的是maven进行管理,只需要在pom.xml中进行如下配置 <!-- jetty插件 jetty:run--> ...
- django-form介绍
Django form表单 目录 普通方式手写注册功能 views.py login.html 使用form组件实现注册功能 views.py login2.html 常用字段与插件 initia ...
- JavaScript 输入小数点(event.key或event.code)
1. 概述 1.1 说明 在开发过程中,有时候需要仅输入数字与小数,故记录下使用过的功能,以便后期使用. 1.2 key 定义:按下按键时返回的标识符,按键标识符是表示键盘按钮的字符串(如1,2,a等 ...