`
lgwt9829
  • 浏览: 18066 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

wabacus 与 ztree 结合的实战

 
阅读更多

前年写过一个集成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的群咨询。

  • 大小: 23.3 KB
  • 大小: 75.3 KB
  • 大小: 60.3 KB
  • 大小: 48.7 KB
  • 大小: 13.5 KB
分享到:
评论

相关推荐

    Ztree结合BootStrap版

    在IT行业中,构建用户界面是一项重要的任务,而Ztree与Bootstrap的结合则为开发者提供了一种高效、美观的解决方案。Ztree是一款强大的JavaScript树形插件,它支持丰富的交互功能和自定义样式,广泛应用于数据展示、...

    easyUI1.4与ztree3.5结合+ztree中文帮助文档

    zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件 兼容 IE、FireFox、Chrome 等浏览器,easyUI1.4与ztree3.5结合开发,ztree帮助文档对初用者很有帮助......

    easyUI和zTree的结合使用

    本篇文章将详细介绍如何将EasyUI与zTree结合使用,以及这两个库的基本功能。 EasyUI是一款基于jQuery的轻量级前端框架,它提供了一系列预定义的CSS样式和JavaScript组件,如窗口、表格、菜单、对话框等,帮助开发者...

    前端js ZTree的实现代码

    首先,我们需要引入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官网ztree官网...

    ztree 结合vs2010+sql2008 生成动态树

    《利用ZTree、VS2010与SQL2008构建动态树形结构》 在信息技术领域,数据的组织和展示方式对于用户界面的易用性和效率至关重要。本项目结合了ZTree、Visual Studio 2010(VS2010)以及SQL Server 2008这三款强大的...

    ztree与SSM框架的结合

    项目使用到以下技术: 1、)js、css、jquery、ztree、bootstrap; 2、)quartz、pagehelper; 3、)项目框架:Sping + SpringMVC + myBatis ;

    zTree帮助文档_ztree_

    **zTree概述** zTree是一款基于JavaScript的树形插件,广泛应用于网页中展示层级结构...总之,zTree是一个强大且易用的树形插件,结合其详尽的API和CHM帮助文档,开发者能够轻松地在项目中构建出功能丰富的树形界面。

    zTree zTree zTree

    zTree不仅适用于静态展示,还可以结合后台动态交互,如权限管理、文件管理系统、组织架构展示等。通过与其他前端框架(如AngularJS、Vue.js)集成,能进一步提升开发效率和用户体验。 总之,zTree是一款强大而灵活...

    zTree的基本应用

    zTree是一款广泛应用于Web开发中的JavaScript树形插件,它以灵活、易用和功能强大而受到开发者们的青睐。在“zTree的基本应用”中,我们...在实际开发中,结合zTree的API和回调机制,我们可以轻松实现各种定制化需求。

    EasyUI1.4+zTree3.5.16完美结合框架布局

    总结来说,"EasyUI1.4+zTree3.5.16完美结合框架布局"是一种高效的Web开发模式,它利用EasyUI强大的组件库和zTree的灵活树形数据展示,共同构建出高效、易用且功能丰富的管理界面。通过这种方式,开发者可以快速搭建...

    基于ztree开发的下拉树控件ztree-select

    【基于ztree开发的下拉树控件ztree-select】是一种高效的前端UI组件,它结合了ztree的核心特性和下拉菜单的功能,适用于构建具有层级结构的选中项。ztree是一个广泛使用的JavaScript树形插件,而ztree-select则是其...

    zTree-zTree_v3-master.zip_ztree_多功能插件

    8. **API接口**:zTree提供了一系列的JavaScript API接口,开发者可以通过调用这些接口来实现与zTree的交互,如获取选中节点、获取父节点等。 总的来说,zTree_v3是一个强大而全面的jQuery树插件,无论是对于新手...

    zTree树结构包,与jBox弹窗的包

    将`zTree`与`jBox`结合使用,可以在树形结构中触发弹窗,比如当用户点击某个节点时,弹出一个`jBox`窗口展示该节点的详细信息或进行相关操作。例如,你可以在`zTree`的`onClick`事件中调用`jBox`的`show`方法,传递...

    bootstrap风格ztree适应移动端

    Bootstrap风格的ZTree是将流行的前端框架Bootstrap与ZTree(一个强大的JavaScript树插件)相结合,以实现更适应移动端展示和交互的树形菜单。在移动端应用中,它提供了优化的布局和触摸友好的交互方式,使用户在手机...

    zTree主题 bootstrapStyle、metroStyle等

    将zTree与Bootstrap风格结合,可以确保zTree的样式与采用Bootstrap构建的网站保持一致,提升整体视觉效果。这个主题通常会包括Bootstrap的栅格系统、按钮、表单元素等样式,使得zTree节点在页面上展示得更加协调。...

    ztree官网参考文档及demo

    《zTree全方位解析与实战应用》 zTree是一款在Web前端广泛应用的JavaScript树形插件,以其丰富的功能、良好的性能和灵活的定制性受到了开发者的青睐。本文将深入解析zTree的核心概念,介绍其基本使用方法,并通过...

    ztree脚本、ztree下载

    7. **集成与兼容性**:ztree是基于jQuery构建的,因此需要在支持jQuery的环境中运行。同时,它兼容多种浏览器,包括IE6+、Firefox、Chrome、Safari等,满足了不同用户的浏览器需求。 总之,ztree是一个强大且灵活的...

    ztree_bootstrap样式风格

    标题"ztree_bootstrap样式风格"意味着我们将讨论如何将`ZTree`与`Bootstrap`的样式相结合,以获得更美观、统一的界面效果。`Bootstrap`提供了丰富的预定义样式,包括字体、颜色、按钮、表单、网格系统等,能够帮助...

    select2ztree.zip

    4. 结合Select2与ZTree:将ZTree的容器作为Select2的下拉菜单,通过监听ZTree的节点点击事件,更新Select2的选择值。 5. 数据同步:当用户在Select2中进行选择时,同步到ZTree中相应节点的状态;反之,当ZTree的...

Global site tag (gtag.js) - Google Analytics