zTree 可以实现异步加载。异步加载可以让初次加载速度快,带来好的用户体验。
异步加载 官方源码中的demo提示了例子。例子是采用php语言。
在java语言中,zTree如何与Servlet结合呢?
下面这个Demo演示了Servlet + Gson + MySQL 实现异步加载。
第一步,引入css和js,参考一上节《zTree》
第二步,修改ztree初始方法如下:
关键代码在7~12行,配置异步加载功能,传递一个参数id给控制器treeAjaxAsyncLoad.do,控制器控制id查找所以子节点(直属子节点,孙子节点就没查找)
第三步,控制器
代码如下:
这部分代码是根据前端传递的参数,来查询子节点,并转换成json格式响应给前端。
JsonUtils.printJson()方法是将数据生成json格式。
代码如下:
第四步,数据访问层两个关键方法:
方法一:
从数据库里查询数据封装成树结构对象。代码的第6~8行,设置是否为父节点,如果是父节点,在html上显示是一个文件夹,前面有加号,还可以展开,如果不是,在html上显示是一个文件且不可以展开。
方法二:
方法二和方法一样,都从数据库里查询数据封装成树结构对象。不同的是带查询参数,查找的是子节点。
本示例数据访问层使用apache的dbutils,读者根据自己的情况(原生JDBC、Spring JDBC、mybatis、Spring Data JPA)调整。
并且设置ztree的url。
ArticleTree和ArticleTreeUrl数据模型如下: