基于jquery+ztree+java获取json数据构建树实例

zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件

兼容 IE、FireFox、Chrome 等浏览器
在一个页面内可同时生成多个 Tree 实例
支持 JSON 数据
支持一次性静态生成 和 Ajax 异步加载 两种方式
支持多种事件响应及反馈
支持 Tree 的节点移动、编辑、删除
支持任意更换皮肤 / 个性化图标(依靠css)
支持极其灵活的 checkbox 或 radio 选择功能
简单的参数配置实现 灵活多变的功能
因为ztree的格式支持Json,所以我们就新建了一个Node类【TreeNode.java】

/**
 * TreeNode.java
 * 版权所有(C) 2012
 * 创建:cuiran 2012-06-12 15:37:40
 */
package com.fastjson.test;

/**
 * TODO
 * @author cuiran
 * @version TODO
 */
public class TreeNode {
 private Integer id;
 private Integer pId;
 private String name;
 private Boolean checked;
 private Boolean open;
 /**
  * @return the id
  */
 public Integer getId() {
  return id;
 }
 /**
  * @param id the id to set
  */
 public void setId(Integer id) {
  this.id = id;
 }
 /**
  * @return the pId
  */
 public Integer getPId() {
  return pId;
 }
 /**
  * @param id the pId to set
  */
 public void setPId(Integer id) {
  pId = id;
 }
 /**
  * @return the name
  */
 public String getName() {
  return name;
 }
 /**
  * @param name the name to set
  */
 public void setName(String name) {
  this.name = name;
 }
 /**
  * @return the checked
  */
 public Boolean isChecked() {
  return checked;
 }
 /**
  * @param checked the checked to set
  */
 public void setChecked(Boolean checked) {
  this.checked = checked;
 }
 /**
  * @return the open
  */
 public Boolean isOpen() {
  return open;
 }
 /**
  * @param open the open to set
  */
 public void setOpen(Boolean open) {
  this.open = open;
 }
 public TreeNode(Integer id, Integer pId, String name, Boolean checked, Boolean open) {
  super();
  this.id = id;
  this.pId = pId;
  this.name = name;
  this.checked = checked;
  this.open = open;
 }
 public TreeNode() {
  super();
 }
 

}
新建一个TreeServlet【TreeServlet.java】

package com.fastjson.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;

public class TreeServlet extends HttpServlet {

 /**
  * Constructor of the object.
  */
 public TreeServlet() {
  super();
 }

 /**
  * Destruction of the servlet. <br>
  */
 public void destroy() {
  super.destroy(); // Just puts "destroy" string in log
  // Put your code here
 }

 /**
  * The doGet method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to get.
  *
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  this.doPost(request, response);
 }

 /**
  * The doPost method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to post.
  *
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html");
  response.setCharacterEncoding("utf-8");
  
  PrintWriter out = response.getWriter();
  
  TreeNode node1=new TreeNode(1,0,"北京市",false,true);
  TreeNode node2=new TreeNode(2,1,"朝阳区",false,true);
  TreeNode node3=new TreeNode(3,1,"海淀区",false,true);
  
  TreeNode node4=new TreeNode(4,0,"湖北省",false,true);
  TreeNode node5=new TreeNode(5,4,"武汉市",false,true);
  TreeNode node6=new TreeNode(6,4,"襄阳市",false,true);
  
  List<TreeNode> list=new ArrayList<TreeNode>();
  list.add(node1);
  list.add(node2);
  list.add(node3);
  list.add(node4);
  list.add(node5);
  list.add(node6);
  
  String jsonString = JSON.toJSONString(list);
  System.out.println("调用后台:"+jsonString);
  out.println(jsonString);
  out.flush();
  out.close();
 }

 /**
  * Initialization of the servlet. <br>
  *
  * @throws ServletException if an error occurs
  */
 public void init() throws ServletException {
  // Put your code here
 }

}

 

网页代码【tree.jsp】

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'tree.jsp' starting page</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
 <link rel="stylesheet" href="css/demo.css" type="text/css">
 <link rel="stylesheet" href="css/zTreeStyle/zTreeStyle.css" type="text/css">
 <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
 <script type="text/javascript" src="js/jquery.ztree.core-3.2.js"></script>
 <script type="text/javascript" src="js/jquery.ztree.excheck-3.2.js"></script>
 
 
 <SCRIPT type="text/javascript">
  <!--
  var setting = {
   check: {
    enable: true
   },
   data: {
    simpleData: {
     enable: true
    }
   }
  };

  var zNodes ;
  
  
  var code;
 
  function setCheck() {
  
   var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
   py = $("#py").attr("checked")? "p":"",
   sy = $("#sy").attr("checked")? "s":"",
   pn = $("#pn").attr("checked")? "p":"",
   sn = $("#sn").attr("checked")? "s":"",
   type = { "Y":py + sy, "N":pn + sn};
   zTree.setting.check.chkboxType = type;
   showCode('setting.check.chkboxType = { "Y" : "' + type.Y + '", "N" : "' + type.N + '" };');
  }
  function showCode(str) {
   if (!code) code = $("#code");
   code.empty();
   code.append("<li>"+str+"</li>");
  }
  
 
  function fuzhi(data){
   
  
   zNodes=eval("("+data+")");
  
   
   $.fn.zTree.init($("#treeDemo"), setting, zNodes);
  
   setCheck();
   $("#py").bind("change", setCheck);
   $("#sy").bind("change", setCheck);
   $("#pn").bind("change", setCheck);
   $("#sn").bind("change", setCheck);
   
  
  }
  
  $(document).ready(function(){
   
  
  $.get("http://localhost:8090/Test/servlet/tree",function(data){
  
   $('#result').text(data);//直接展示JSON数据
   fuzhi(data);
   
   });

  });
  //-->
 </SCRIPT>
  </head>
 
  <body >
    This is my JSP page. <br>
    <div  id="result">
 </div>
    <div class="zTreeDemoBackground left">
  <ul id="treeDemo" class="ztree"></ul>
 </div>
 <div class="right">
  <ul class="info">
   <li class="title"><h2>1、setting 配置信息说明</h2>
    <ul class="list">
    <li class="highlight_red">使用 checkbox,必须设置 setting.check 中的各个属性,详细请参见 API 文档中的相关内容</li>
    <li><p>父子关联关系:<br/>
      被勾选时:<input type="checkbox" id="py" class="checkbox first" checked /><span>关联父</span>
      <input type="checkbox" id="sy" class="checkbox first" checked /><span>关联子</span><br/>
      取消勾选时:<input type="checkbox" id="pn" class="checkbox first" checked /><span>关联父</span>
      <input type="checkbox" id="sn" class="checkbox first" checked /><span>关联子</span><br/>
      <ul id="code" class="log" style="height:20px;"></ul>
      </p>
    </li>
    </ul>
   </li>
   <li class="title"><h2>2、treeNode 节点数据说明</h2>
    <ul class="list">
    <li class="highlight_red">1)、如果需要初始化默认节点被勾选,请设置 treeNode.checked 属性,详细请参见 API 文档中的相关内容</li>
    <li class="highlight_red">2)、如果某节点禁用 checkbox,请设置 treeNode.chkDisabled 属性,详细请参见 API 文档中的相关内容 和 'chkDisabled 演示'</li>
    <li class="highlight_red">3)、如果某节点不显示 checkbox,请设置 treeNode.nocheck 属性,详细请参见 API 文档中的相关内容 和 'nocheck 演示'</li>
    <li class="highlight_red">4)、如果更换 checked 属性,请参考 API 文档中 setting.data.key.checked 的详细说明</li>
    <li>5)、其他请参考 API 文档中 treeNode.checkedOld / getCheckStatus / check_Child_State / check_Focus 的详细说明</li>
    </ul>
   </li>
  </ul>
 </div>
  </body>
</html>

时间: 2024-12-21 22:03:33

基于jquery+ztree+java获取json数据构建树实例的相关文章

jquery的ajax和getJson跨域获取json数据的实现方法

 本篇文章主要是对jquery的ajax和getJson跨域获取json数据的实现方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 很多开发人员在使用jquery在前端和服务器端进行数据交互,所以很容易会认为在前端利用jquery就可以读取任何站点的数据了.近日在进行开 发时,因为要和第三方公司的一个项目进行数据的共享,因为考虑多不占用服务器的资源,遂决定直接在html进行数据的读取,不走服务器端进行中转了.然后 正好就遇到了浏览器端跨域访问的问题.   跨域的安全限制都是指浏览器端

jQuery异步获取json数据方法汇总_jquery

jQuery异步获取json数据有2种方式,一个是$.getJSON方法,一个是$.ajax方法.本篇体验使用这2种方式异步获取json数据,然后追加到页面. 在根目录下创建data.json文件: 复制代码 代码如下: {     "one" : "Hello",     "two" : "World" } ■ 通过$.getJSON方法获取json数据 复制代码 代码如下:     <script src="

jQuery通过ajax方法获取json数据不执行success的原因及解决方法_jquery

1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准写法,导致总是执行error回调方法 解决方案:使json格式务必符合下述3个标准写法: 1)键名称:用双引号括起: 2)字符串:用双引号括起: 3)数字,布尔值不需要使用双引号括起 : 注意:一定是双括号! 2.jQuery中ajax使用json数据类型总是跳过success执行error语句 执

jQuery使用getJSON方法获取json数据完整示例_jquery

本文实例讲述了jQuery使用getJSON方法获取json数据.分享给大家供大家参考,具体如下: demo.js: [ { "name":"吴者然", "sex":"男", "email":"demo1@123.com" }, { "name":"吴中者", "sex":"男", "email&q

jQuery实现在下拉列表选择时获取json数据的方法_jquery

本文实例讲述了jQuery实现在下拉列表选择时获取json数据的方法.分享给大家供大家参考.具体如下: function populateDropDown() { $.getJSON('/getData.aspx',{Name:$('#parm').val()},function(data){ var select = $('#DDLControl'); var options = select.attr('options'); $('option', select).remove(); $.e

jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表_jquery

对于问题从后台获取json数据,将内容填充到下拉列表,代码非常简单,具体过程请看下面代码. 需求:url:链接     par:ID       sel:下拉列表选择器 //获取下拉列表 function BuildSelectBox(url, par, sel) { $(sel).empty(); $.getJSON(url, { id: par }, function (json, textStatus) { for (var i = json.length - 1; i >= 0; i--

AJAX跨域请求之JSONP获取JSON数据_AJAX相关

Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用 XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器.Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序. 不过,由于受到浏览器的限制,该

android客户端从服务器端获取json数据并解析的实现代码_Android

首先客户端从服务器端获取json数据 1.利用HttpUrlConnection 复制代码 代码如下: /**      * 从指定的URL中获取数组      * @param urlPath      * @return      * @throws Exception      */     public static String readParse(String urlPath) throws Exception {                  ByteArrayOutputSt

AJAX跨域请求JSONP获取JSON数据的实例代码

Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器.Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序. 不过,由于受到浏览器的限制,该方法