前年写过一个集成ztree的帖子,当时是为了测试是否可用,树的节点是写死的。
本次基于一个小应用的需求,把ztree的集成落地与此项目。废话不多少,直接上代码。
1.准备工作还是请参照前文wabacus 集成ztree,链接为http://lgwt9829.iteye.com/blog/1834820
首先,将ztree需要的js包及css文件加载到项目中。如下图:
把这些js文件copy到WebRoot\wabacusdemo\js\下面
同样把css文件copy到WebRoot\wabacusdemo\css下面
2.jsp页面
<%@page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <HTML> <HEAD> <TITLE> ZTREE DEMO - Standard Data </TITLE> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--引用文件 --> <link rel="stylesheet" href="webresources/tree/css/demo.css" type="text/css"> <link rel="stylesheet" href="webresources/tree/css/zTreeStyle/zTreeStyle.css" type="text/css"> <script type="text/javascript" src="webresources/tree/js/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="webresources/tree/js/jquery.ztree.core-3.5.js"></script> <SCRIPT type="text/javascript"> <!-- var setting = { callback: { /* 点击节点,执行回调函数 */ onClick: zTreeOnClick }, data: { simpleData: { enable: true } } }; $.ajax({ //要用post方式 type: "Post", //方法所在页面和方法名 url: "/dj/wTree", data:null, contentType: "application/json; charset=utf-8", dataType: "json", success: function(myreturn) { //返回的数据 var zNodes =myreturn; $.fn.zTree.init($("#treeDemo"), setting, zNodes); }, error: function(err) { alert("错了:"+err); } }); /* 点击节点执行方法,主要是更改ifream中src的值 */ function zTreeOnClick(event, treeId, treeNode) { document.getElementById('sampleframe').src='/dj/ShowReport.wx?PAGEID=view&txtid='+treeNode.id+''; }; //--> </SCRIPT> </HEAD> <BODY> <h1>上传材料 </h1> <div class="content_wrap"> <div class="zTreeDemoBackground left"> <ul id="treeDemo" class="ztree"></ul> </div> <div class="right"> <iframe id="sampleframe" name="sampleframe" width="100%" height="99%" frameborder="0" src="" style="border: 0px solid #cecece;"></iframe> </div> </div> </BODY> </HTML>
其中 使用ajax的方式异步获取节点信息。
$.ajax({ //要用post方式 type: "Post", //方法所在页面和方法名 url: "/dj/wTree", data:null, contentType: "application/json; charset=utf-8", dataType: "json", success: function(myreturn) { //返回的数据 var zNodes =myreturn; $.fn.zTree.init($("#treeDemo"), setting, zNodes); }, error: function(err) { alert("错了:"+err); } });
3.通过类来获取数据库里的数据并组装成符合ztree要求的json对象。
package com.lg.tree; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.mysql.jdbc.ResultSetMetaData; import com.wabacus.config.Config; /** * 思路: * 1.创建数据连接 * 2.通过result获取查询结果 * 3.通过org.json的jar包将结果转为json对象 * */ public class wTree extends HttpServlet implements javax.servlet.Servlet { public void buildTree(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ Connection conn =Config.getInstance().getDataSource("").getConnection(); String sql ="select id_ as id , pid as pId , lb as name from define where flag='有效'"; PreparedStatement pstmt = null; String jsonStr = null; response.setCharacterEncoding("UTF-8");//为response设置字符集,否则前台乱码 PrintWriter out = response.getWriter(); try { pstmt =conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); jsonStr = resultSetToJson(rs); out.write(jsonStr); } catch (Exception e) { // TODO: handle exception System.out.println("这里失败了"); } } //结果集转json的方法 public String resultSetToJson(ResultSet rs) throws SQLException,JSONException{ //定义json数组 JSONArray ja = new JSONArray(); //获取结果集信息 ResultSetMetaData metaData = (ResultSetMetaData) rs.getMetaData(); int count = metaData.getColumnCount(); //遍历每条数据 while(rs.next()){ JSONObject jsonObj = new JSONObject(); //遍历每列 for(int i = 1; i<=count;i++){ String label = metaData.getColumnLabel(i); String value = rs.getString(label); jsonObj.put(label, value); } ja.put(jsonObj); } return ja.toString(); } /** * POST方法 */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { buildTree(request, response); } }
本类就3个方法,一个是post,一个是链接数据库,通过把数据查出来,并组装成id ,pid , 节点名 的结构。然后通过resultSetToJson方法将结果集转为json对象。
4.最后,自然要在web.xml中注册servelt了
<servlet-mapping> <servlet-name>reportservlet</servlet-name> <url-pattern>/ShowReport.wx</url-pattern> </servlet-mapping> <servlet> <servlet-name>wTree</servlet-name> <servlet-class>com.lg.tree.wTree</servlet-class> </servlet>
5.数据库结构图
测试数据如下:
数据库很简单,就是常见的id pid的结构
6.最后实现了树与report的对接,显示如下
恩,至此,ztree与wabacus就算无缝对接了,说起来也很简单,就是一个前后台传值 以及 节点出发url显示page的过程。
需要注意的是,因为ie6 7 9 与 360 对 json支持有限,在chrome下调试没有问题,但是在这两个浏览器中树会出现异常,百度了一下,得知json中 要去掉最后一个逗号 以及 相关脚本中要注意最后一个不能加逗号,比如data和callback中均需要注意。
好了,本文就写到这,相关事宜可以加wabacus的群咨询。
相关推荐
在IT行业中,构建用户界面是一项重要的任务,而Ztree与Bootstrap的结合则为开发者提供了一种高效、美观的解决方案。Ztree是一款强大的JavaScript树形插件,它支持丰富的交互功能和自定义样式,广泛应用于数据展示、...
zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件 兼容 IE、FireFox、Chrome 等浏览器,easyUI1.4与ztree3.5结合开发,ztree帮助文档对初用者很有帮助......
本篇文章将详细介绍如何将EasyUI与zTree结合使用,以及这两个库的基本功能。 EasyUI是一款基于jQuery的轻量级前端框架,它提供了一系列预定义的CSS样式和JavaScript组件,如窗口、表格、菜单、对话框等,帮助开发者...
首先,我们需要引入ZTree的核心库文件`ztree.js`和对应的CSS样式文件`ztree.css`。这些文件通常在下载ZTree后会包含在`WebTree`目录下。确保在HTML页面中正确链接这两个文件,以便在页面中使用ZTree功能。 接着,...
ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网...
《利用ZTree、VS2010与SQL2008构建动态树形结构》 在信息技术领域,数据的组织和展示方式对于用户界面的易用性和效率至关重要。本项目结合了ZTree、Visual Studio 2010(VS2010)以及SQL Server 2008这三款强大的...
项目使用到以下技术: 1、)js、css、jquery、ztree、bootstrap; 2、)quartz、pagehelper; 3、)项目框架:Sping + SpringMVC + myBatis ;
**zTree概述** zTree是一款基于JavaScript的树形插件,广泛应用于网页中展示层级结构...总之,zTree是一个强大且易用的树形插件,结合其详尽的API和CHM帮助文档,开发者能够轻松地在项目中构建出功能丰富的树形界面。
zTree不仅适用于静态展示,还可以结合后台动态交互,如权限管理、文件管理系统、组织架构展示等。通过与其他前端框架(如AngularJS、Vue.js)集成,能进一步提升开发效率和用户体验。 总之,zTree是一款强大而灵活...
zTree是一款广泛应用于Web开发中的JavaScript树形插件,它以灵活、易用和功能强大而受到开发者们的青睐。在“zTree的基本应用”中,我们...在实际开发中,结合zTree的API和回调机制,我们可以轻松实现各种定制化需求。
总结来说,"EasyUI1.4+zTree3.5.16完美结合框架布局"是一种高效的Web开发模式,它利用EasyUI强大的组件库和zTree的灵活树形数据展示,共同构建出高效、易用且功能丰富的管理界面。通过这种方式,开发者可以快速搭建...
【基于ztree开发的下拉树控件ztree-select】是一种高效的前端UI组件,它结合了ztree的核心特性和下拉菜单的功能,适用于构建具有层级结构的选中项。ztree是一个广泛使用的JavaScript树形插件,而ztree-select则是其...
8. **API接口**:zTree提供了一系列的JavaScript API接口,开发者可以通过调用这些接口来实现与zTree的交互,如获取选中节点、获取父节点等。 总的来说,zTree_v3是一个强大而全面的jQuery树插件,无论是对于新手...
将`zTree`与`jBox`结合使用,可以在树形结构中触发弹窗,比如当用户点击某个节点时,弹出一个`jBox`窗口展示该节点的详细信息或进行相关操作。例如,你可以在`zTree`的`onClick`事件中调用`jBox`的`show`方法,传递...
Bootstrap风格的ZTree是将流行的前端框架Bootstrap与ZTree(一个强大的JavaScript树插件)相结合,以实现更适应移动端展示和交互的树形菜单。在移动端应用中,它提供了优化的布局和触摸友好的交互方式,使用户在手机...
将zTree与Bootstrap风格结合,可以确保zTree的样式与采用Bootstrap构建的网站保持一致,提升整体视觉效果。这个主题通常会包括Bootstrap的栅格系统、按钮、表单元素等样式,使得zTree节点在页面上展示得更加协调。...
《zTree全方位解析与实战应用》 zTree是一款在Web前端广泛应用的JavaScript树形插件,以其丰富的功能、良好的性能和灵活的定制性受到了开发者的青睐。本文将深入解析zTree的核心概念,介绍其基本使用方法,并通过...
7. **集成与兼容性**:ztree是基于jQuery构建的,因此需要在支持jQuery的环境中运行。同时,它兼容多种浏览器,包括IE6+、Firefox、Chrome、Safari等,满足了不同用户的浏览器需求。 总之,ztree是一个强大且灵活的...
标题"ztree_bootstrap样式风格"意味着我们将讨论如何将`ZTree`与`Bootstrap`的样式相结合,以获得更美观、统一的界面效果。`Bootstrap`提供了丰富的预定义样式,包括字体、颜色、按钮、表单、网格系统等,能够帮助...
4. 结合Select2与ZTree:将ZTree的容器作为Select2的下拉菜单,通过监听ZTree的节点点击事件,更新Select2的选择值。 5. 数据同步:当用户在Select2中进行选择时,同步到ZTree中相应节点的状态;反之,当ZTree的...