jquery zTree 入门,从后台获取数据

一、java action 代码:

public void displayTree() {
        String id = ServletActionContext.getRequest().getParameter("id");
        log.info("################" + id);
         log.info("display department tree");
         if(treeId == null || "".equals(treeId.trim())) {
             treeId = "0";
         }
         log.info("Node节点id是:" + treeId);
         List<SmDepartment> deptList = null;
         try {
             deptList = departmentService.getDeptByPid(treeId);
         } catch(Exception e) {
             e.printStackTrace();
         }
         JSONArray json = new JSONArray();
          if(deptList != null) {
              for(SmDepartment dept : deptList) {
                  String line = String.format("{id:\"%s\", pId:\"%s\", name:\"%s\", isParent:%s}", dept.getDepartmentId(), dept.getParent(),dept.getName(),true);
                  log.info(line);
                  json.put(line);
              }
             print2web(json.toString());
          } else {
              log.info("没有部门信息");
              print2web("no");
          }
    }
    
    private boolean print2web(String content) {
        //HttpServletRequest response = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
        PrintWriter out = null;
        try {
            out = ServletActionContext.getResponse().getWriter();
            ServletActionContext.getResponse().setContentType("application/json");
            ServletActionContext.getResponse().setCharacterEncoding("UTF-8");
            out.write(content);
            out.flush();
            out.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            out.flush();
            out.close();
        }
        return false;
    }

二、需要的包:

<link rel="stylesheet" type="text/css" href="<s:url value='/css/zTreeStyle/zTreeStyle.css'/>" />
<script type="text/javascript" charset="utf-8" src="<s:url value='/script/jquery-1.4.4.min.js'/>"></script>
<script type="text/javascript" charset="utf-8" src="<s:url value='/script/jquery.ztree.core-3.5.js'/>"></script>
<script type="text/javascript" charset="utf-8" src="<s:url value='/script/jquery.ztree.excheck-3.5.js'/>"></script>

<style type="text/css">
ul.ztree {margin-top: 10px;border: 1px solid #617775;background: #f0f6e4;width:220px;height:360px;overflow-y:scroll;overflow-x:auto;}
</style>

三、前台js代码

<SCRIPT type="text/javascript">
var setting = {
    view: {        
            selectedMulti: false
    },
    async: {
            enable: true,
            type: "post",
            url: getUrl,
            contentType:"application/json",
            dataFilter : filter
    },
    check: {
        enable: true,
        chkStyle: "radio",
        radioType: "all"
    },
    view: {
        dblClickExpand: false
    },
    data: {
        simpleData: {
            enable: true
        }
    },
    callback: {
        onClick: onClick,
        onCheck: onCheck
    }
};

function getUrl(treeId, treeNode) {
    var param = "";
    if(treeNode) {
        param = "?treeId=" + treeNode.id
    }
    return "displayTree" + param;
}
function filter(treeId, parentNode, childNodes) {
    var str = "[" + childNodes + "]";
    var obj = eval(str);
    return obj;    
}

    function onClick(e, treeId, treeNode) {
        var zTree = $.fn.zTree.getZTreeObj("treeDemo");
        zTree.checkNode(treeNode, !treeNode.checked, null, true);
        return false;
    }

    function onCheck(e, treeId, treeNode) {
        var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
        nodes = zTree.getCheckedNodes(true),
        //treeNode name
        v = "";
        for ( var i = 0, l = nodes.length; i < l; i++) {
            v += nodes[i].name + ",";
        }
        if (v.length > 0) {
            v = v.substring(0, v.length - 1);
        }
        var cityObj = $("#citySel");
        cityObj.attr("value", v);
        //treeNode id
        var objId = "";
        for ( var i = 0, l = nodes.length; i < l; i++) {
            objId += nodes[i].id + ",";
        }
        if(objId.length > 0) {
            objId = objId.substring(0, objId.length-1);
        }
        var cityObjId = $("#citySelId");
        cityObjId.attr("value", objId);
        hideMenu();
    }

    function showMenu() {
        var cityObj = $("#citySel");
        var cityOffset = $("#citySel").offset();

        $.fn.zTree.init($("#treeDemo"), setting);

        $("#menuContent").css({
            left : cityOffset.left + 90 + "px",
            top : cityOffset.top + cityObj.outerHeight() + "px"
        }).slideDown("fast");

        $("body").bind("mousedown", onBodyDown);
    }
    function hideMenu() {
        $("#menuContent").fadeOut("fast");
        $("body").unbind("mousedown", onBodyDown);
    }
    function onBodyDown(event) {
        if (!(event.target.id == "menuBtn" || event.target.id == "citySel"
                || event.target.id == "menuContent" || $(event.target).parents(
                "#menuContent").length > 0)) {
            hideMenu();
        }
    }
</SCRIPT>

四、html代码:

<tr class="tr5">
                        <td class="td1"><span style="color:#ff0000">*</span>发送部门:</td>
                        <td>
                            <div class=""><!-- content_wrap  -->
                            <div class=""><!-- zTreeDemoBackground left  -->
                                <ul class=""><!-- list  -->
                                    <input id="citySel" type="text" readonly value="" style="width:120px;" οnclick="showMenu();" >
                                    <br><input id="citySelId" type="text" value=""/>
                                </ul>
                            </div>
                        </div>
                        <div id="menuContent" class="menuContent" style="display:none; position: absolute;">
                            <ul id="treeDemo" class="ztree" style="margin-top:0; width:150px; height: 300px;"></ul>
                        </div>
                        </td>


五、注意:一次加载完后台数据

$(function() {
     var treeNodes;
     $.ajax({  
     async : false,  
     cache:false,  
     type: 'POST',  
     contentType:"application/json",
     url: "displayTree",//请求的action路径  
     error: function () {//请求失败处理函数  
     alert('请求失败');  
     },  
     success:function(data){ //请求成功后处理函数。    
     data = "[" + data + "]";
     treeNodes = eval(data);
     }  
     });
     $.fn.zTree.init($("#treeDemo"), setting, treeNodes);
     });




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery zTree是一个依靠jQuery实现的多功能树插件。它具有优异的性能、灵活的配置和多种功能的组合。最新版的zTree将核心代码按照功能进行了分割,并提供了多个插件文件,根据需要加载对应的插件文件。例如,若只需要基本的功能,只需要加载核心的jquery.ztree.core-3.5.js文件;若需要勾选功能,还需要加载jquery.ztree.excheck-3.5.min.js文件;若需要编辑功能,还需要加载jquery.ztree.exedit-3.5.min.js文件。使用zTree插件可以方便地实现树形结构的展示与操作,适用于各种项目需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [JqueryZtree详解](https://blog.csdn.net/GreyCastle/article/details/100993293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [jQuery zTree](https://download.csdn.net/download/mushu1025/10153161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [JqueryzTree控件使用](https://blog.csdn.net/weixin_41429587/article/details/123400627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值