本文介绍: 两种方式实现JQuery + zTree从后端获取数据,并形成树。

1.方式一:自己通过ajax请求获取数据后,再将节点信息传给zTree。(省略项目创建controller的创建,不会的可以文章IDEA中创建SpringBoot项目,并实现HelloWorld》)

controller中写一个接口返回需要数据

@RestController
@RequestMapping("/student/courseDocument")
public class CourseDocumentController {

        @Autowired
        private CourseDocumentService courseDocumentService;

        @GetMapping("/getByStudentId")
        public AjaxResult getByStudentId(HttpSession session) {
            Student student = (Student) session.getAttribute("student");
            if (ObjectUtil.isNotNull(student)) {
                String studentId = student.getId();
                LambdaQueryWrapper<CourseDocument> wrapper = Wrappers.<CourseDocument>lambdaQuery()
                    .eq(CourseDocument::getStudentId, studentId);
                List<CourseDocument> courseDocuments = courseDocumentService.list(wrapper);
                return AjaxResult.success("查询成功",courseDocuments);
            }
            return AjaxResult.success("学生信息存在");
        }

    }

前端通过Ajax获取,并直接传到zTree中。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head th:replace="fragment/header :: bootstrapHeader">
</head>

<head th:replace="fragment/header :: zTree">
</head>
<head>
    <script>
        let zNodes;
        $(document).ready(function () {

            $.ajax({
                type: "get",
                url: "/student/courseDocument/getByStudentId",
                async: false,
                success: function (response) {
                    zNodes = response.data;
                }
            });
            let setting = {
                view: {
                    dblClickExpand: false,
                    showLine: true,
                    selectedMulti: false
                },
                data: {
                    key: {
                        //显示名称在列表中属性name: "name"
                    },
                    simpleData: {
                        enable: true,
                        //id列表中的属性idKey: "id",
                        //父id列表中的属性pIdKey: "parentId"
                    }
                }
            };
            zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, zNodes);
        });
    </script>
</head>

<body>
    <div>
        <div id="treeDemo" class="ztree"></div>
    </div>
</body>

</html>

结果

提示

1、后端,返回数据进行了封装用到了MybatisPlus。哪怕没用过也没事,只要能返回一个List就可以了,只是介绍思想。

2.前端,用的是thymeleaf通过模块的方式导入jscss自己可以导入jqueryjs、zTreejscss相关图片也可以实现。最后保持下面这种结构,尤其是css最好和img图片在同一层。可以自己gitee下载zTree的gitee网址下载.zip文件后,将css文件下的zTreeStyle整体拷贝,导入这个包下面的zTreeStyle.css就可以了。最后导入.zipjs文件夹下的jquery.ztree.all.js拷贝,并导入就可以了。

注意:

1.class必须为ztree,否则css失效

2.setting配置,可以查看相关API。下面是我的列表信息,可比对上面的属性设置

2.方式二:通过setting中的async属性访问后端获取数据。

@RestController
@RequestMapping("/student/courseDocument")
public class CourseDocumentController {

        @Autowired
        private CourseDocumentService courseDocumentService;

        @GetMapping("/getByStudentId")
        public List<CourseDocument> getByStudentId(HttpSession session) {
            Student student = (Student) session.getAttribute("student");
            if (ObjectUtil.isNotNull(student)) {
                String studentId = student.getId();
                LambdaQueryWrapper<CourseDocument> wrapper = Wrappers.<CourseDocument>lambdaQuery()
                    .eq(CourseDocument::getStudentId, studentId);
                List<CourseDocument> courseDocuments = courseDocumentService.list(wrapper);
                return courseDocuments;
            }
            return null;
        }

}

注意:此时返回的数据必须是需要拼成树的节点集合,不能会再封装,否则,会显示空值为什么?因为我就犯过这个错误。我本来打算,通过配置获取后端数据,再取出数据进行赋值。但是,setting中没有这个配置然后查看源码可以发现,ztree直接取出数据进行赋值

源码截图

前端内容改为

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head th:replace="fragment/header :: bootstrapHeader">
</head>

<head th:replace="fragment/header :: zTree">
</head>
<head>
    <script>
        let zNodes;
        $(document).ready(function () {
            let setting = {
                async: {
                    //异步是否开启true代表开启
                    enable: true,
                    url: "/student/courseDocument/getByStudentId",
                    type: "get"
                },
                view: {
                    dblClickExpand: false,
                    showLine: true,
                    selectedMulti: false
                },
                data: {
                    key: {
                        //显示的名称在列表中的属性名
                        name: "name"
                    },
                    simpleData: {
                        enable: true,
                        //id列表中的属性名
                        idKey: "id",
                        //父id在列表中的属性名
                        pIdKey: "parentId"
                    }
                }
            };
            zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, null);
        });
    </script>
</head>

<body>
    <div>
        <div id="treeDemo" class="ztree"></div>
    </div>
</body>

</html>

此时,节点信息传null就可以了。

以上内容也是自己刚学的,可能有很多不完善的地方,甚至是错误的,请多包涵!!!一起学习,不要颓废,多学点东西总是没错的!!!

原文地址:https://blog.csdn.net/qq_55896432/article/details/127389100

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_40172.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注