这几天项目中要用到树型结构,正好项目中用到了JQuery,所以就在网上找依赖JQuery的JS树,最终选择了 jquery.treeview.js,原因之一,它是JQuery官方发布的JS库,另一方面,看了一下它的文档,使用起来也是很简单的。经过一个小时的研究,终于搞定,现把它的使用方法做个简要的说明,以做笔记。
要使用jquery.treeview.js,当然第一步是要把它下载下来,放入自己的工程中,然后在页面文件中引进 jquery.js,jquery.cookie.js,jquery.treeview.js,jquery.treeview.async.js四个库文件,其中最后一个是要使用异步加载结点的时候,要用到的,我的项目中已经用到了这个功能,在初始化树的时候,只加载顶层的数据,当点击顶层结点的时候,才会去加载下一层的结点,所有的数据都是通过ajax去后台取得到数据。
将库文件引入后,下一步就是要定义一个列表UL:如这样:
<ul id="categorys"></ul>
树数据将会加载到这个UL里面
- <script type="text/javascript">
- $(document).ready(function(){
- $("#categorys").treeview({
- url: "category!ajaxTreeView"
- });
- });
- </script>
<script type="text/javascript"> $(document).ready(function(){ $("#categorys").treeview({ url: "category!ajaxTreeView" }); }); </script>
这里面的意思就是当文档加载完成后,向后台CategoryAction获取数据,注意后台输出的数据必须是json格式的数据。
下一步就是后台CategoryAction的数据输出部分了:
- response.setHeader("Cache-Control", "no-cache");
- response.setContentType("text/json;charset=UTF-8");
- try {
- request.setCharacterEncoding("utf-8");
- } catch (UnsupportedEncodingException e1) {
- e1.printStackTrace();
- }
response.setHeader("Cache-Control", "no-cache"); response.setContentType("text/json;charset=UTF-8"); try { request.setCharacterEncoding("utf-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); }
要将contenttype设置为"text/json",第一次加载初始数据的时候,会向这个CategoryAction传递一个 get参数:root=source,所以后台可以判断root参数是否是source,如果是source,则代表是第一次加载数据,如果不是 source,则root参数传递的則是树结点的id.
数据格式如下:
- [
- {
- "text": "1. Pre Lunch (120 min)",
- "expanded": true,
- "classes": "important",
- "children":
- [
- {
- "text": "1.1 The State of the Powerdome (30 min)"
- },
- {
- "text": "1.2 The Future of jQuery (30 min)"
- },
- {
- "text": "1.2 jQuery UI - A step to richnessy (60 min)"
- }
- ]
- },
- {
- "text": "2. Lunch (60 min)"
- },
- {
- "text": "3. After Lunch (120+ min)",
- "children":
- [
- {
- "text": "3.1 jQuery Calendar Success Story (20 min)"
- },
- {
- "text": "3.2 jQuery and Ruby Web Frameworks (20 min)"
- },
- {
- "text": "3.3 Hey, I Can Do That! (20 min)"
- },
- {
- "text": "3.4 Taconite and Form (20 min)"
- },
- {
- "text": "3.5 Server-side JavaScript with jQuery and AOLserver (20 min)"
- },
- {
- "text": "3.6 The Onion: How to add features without adding features (20 min)",
- "id": "36",
- "hasChildren": true
- },
- {
- "text": "3.7 Visualizations with JavaScript and Canvas (20 min)"
- },
- {
- "text": "3.8 ActiveDOM (20 min)"
- },
- {
- "text": "3.8 Growing jQuery (20 min)"
- }
- ]
- }
- ]
[ { "text": "1. Pre Lunch (120 min)", "expanded": true, "classes": "important", "children": [ { "text": "1.1 The State of the Powerdome (30 min)" }, { "text": "1.2 The Future of jQuery (30 min)" }, { "text": "1.2 jQuery UI - A step to richnessy (60 min)" } ] }, { "text": "2. Lunch (60 min)" }, { "text": "3. After Lunch (120+ min)", "children": [ { "text": "3.1 jQuery Calendar Success Story (20 min)" }, { "text": "3.2 jQuery and Ruby Web Frameworks (20 min)" }, { "text": "3.3 Hey, I Can Do That! (20 min)" }, { "text": "3.4 Taconite and Form (20 min)" }, { "text": "3.5 Server-side JavaScript with jQuery and AOLserver (20 min)" }, { "text": "3.6 The Onion: How to add features without adding features (20 min)", "id": "36", "hasChildren": true }, { "text": "3.7 Visualizations with JavaScript and Canvas (20 min)" }, { "text": "3.8 ActiveDOM (20 min)" }, { "text": "3.8 Growing jQuery (20 min)" } ] } ]
格式说明:上面的1. Pre Lunch (120 min) 结点中:"expanded": true 代表这个结点下的child是展开的,children则是子结点的数据,节点3. After Lunch (120+ min)有8个子结点,其中子结点中有一个结点3.6 The Onion: How to add features without adding features (20 min),有一个id属性,同时hasChildren:true,表示其下面又有子结点,并且会向FetchProductTypeServlet传递参数为:root=id值,具体到这里就是root=36,那么点击这个结点的时候,后台就会接收到root=36这个值,然后我们就在具体应用中,通过数据库查询或者其它方式找到相对应的数据,然后将这些数据构造成treeview所需要的json数据,也即是上面所示格式的数据。
后台CategoryAction代码如下:
- public String ajaxTreeView(){
- Struts2Utils.renderText(categoryHelper.generateJTVJsonString());
- return null;
- }
public String ajaxTreeView(){ Struts2Utils.renderText(categoryHelper.generateJTVJsonString()); return null; }
CategoryHelper代码如下:
- package com.prl.action.admin.helper;
- import java.util.List;
- import javax.servlet.http.HttpServletRequest;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Repository;
- import org.springside.modules.web.struts2.Struts2Utils;
- import com.prl.entity.Category;
- import com.prl.service.CategoryManager;
- import com.prl.service.jdbc.CategoryJdbcUtil;
- @Repository
- public class CategoryHelper {
- private static final Log log = LogFactory.getLog(CategoryHelper.class);
- @Autowired
- public CategoryManager categoryManager;
- @Autowired
- public CategoryJdbcUtil categoryJdbcUtil;
- // ========================= 产生jquery.treeview的jsonstring=================//
- public String generateJTVJsonString() {
- log.info("generateJTVJsonString start .....");
- HttpServletRequest request = Struts2Utils.getRequest();
- String id = request.getParameter("root");
- log.info("id:"+id);
- String output = "";
- if (id == null) {
- return "";
- } else if (id.equalsIgnoreCase("source")) {
- output = generateInitTreeString();
- } else {
- output = generateTreeChildNodeString(Long.parseLong(id));
- }
- log.info("generateJTVJsonString end,return:"+output);
- return output;
- }
- // 产生子节点jsonstring
- private String generateTreeChildNodeString(Long categoryId) {
- StringBuilder jsonString = new StringBuilder();
- jsonString.append("[");
- List<Category> categorys = categoryManager
- .findChildrenCategory(categoryId);
- if (categorys.isEmpty())
- return "";
- int i = 0;
- for (Category category : categorys) {
- if (i > 0) {
- jsonString.append(",");
- }
- jsonString.append(toJSONString(category));
- i++;
- }
- jsonString.append("]");
- return jsonString.toString();
- }
- private String toJSONString(Category category) {
- StringBuilder sb = new StringBuilder();
- sb.append(" {");
- sb.append(" \"text\": \"" + generateLinkString(category) + "\"");
- if (categoryJdbcUtil.hasChild(category)) {
- sb.append(", \"id\":\"" + category.getCatId() + "\"");
- sb.append(", \"hasChildren\":true");
- }
- sb.append(" }");
- return sb.toString();
- }
- private String generateLinkString(Category category) {
- String link = "<a href='javascript:on_cat_click("+category.getCatId()+");' >" + category.getCatName() + "</a>";
- //link = category.getCatName();
- return link;
- }
- private String generateInitTreeString() {
- StringBuilder jsonString = new StringBuilder();
- jsonString.append("[");
- List<Category> categorys = categoryManager.getRoot();
- int i = 0;
- for (Category category : categorys) {
- if (i > 0) {
- jsonString.append(",");
- }
- jsonString.append(toJSONString(category));
- i++;
- }
- jsonString.append("]");
- return jsonString.toString();
- }
- // ==================== 产生jquery.treeview的jsonstring 结束=================//
- }
package com.prl.action.admin.helper; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springside.modules.web.struts2.Struts2Utils; import com.prl.entity.Category; import com.prl.service.CategoryManager; import com.prl.service.jdbc.CategoryJdbcUtil; @Repository public class CategoryHelper { private static final Log log = LogFactory.getLog(CategoryHelper.class); @Autowired public CategoryManager categoryManager; @Autowired public CategoryJdbcUtil categoryJdbcUtil; // ========================= 产生jquery.treeview的jsonstring=================// public String generateJTVJsonString() { log.info("generateJTVJsonString start ....."); HttpServletRequest request = Struts2Utils.getRequest(); String id = request.getParameter("root"); log.info("id:"+id); String output = ""; if (id == null) { return ""; } else if (id.equalsIgnoreCase("source")) { output = generateInitTreeString(); } else { output = generateTreeChildNodeString(Long.parseLong(id)); } log.info("generateJTVJsonString end,return:"+output); return output; } // 产生子节点jsonstring private String generateTreeChildNodeString(Long categoryId) { StringBuilder jsonString = new StringBuilder(); jsonString.append("["); List<Category> categorys = categoryManager .findChildrenCategory(categoryId); if (categorys.isEmpty()) return ""; int i = 0; for (Category category : categorys) { if (i > 0) { jsonString.append(","); } jsonString.append(toJSONString(category)); i++; } jsonString.append("]"); return jsonString.toString(); } private String toJSONString(Category category) { StringBuilder sb = new StringBuilder(); sb.append(" {"); sb.append(" \"text\": \"" + generateLinkString(category) + "\""); if (categoryJdbcUtil.hasChild(category)) { sb.append(", \"id\":\"" + category.getCatId() + "\""); sb.append(", \"hasChildren\":true"); } sb.append(" }"); return sb.toString(); } private String generateLinkString(Category category) { String link = "<a href='javascript:on_cat_click("+category.getCatId()+");' >" + category.getCatName() + "</a>"; //link = category.getCatName(); return link; } private String generateInitTreeString() { StringBuilder jsonString = new StringBuilder(); jsonString.append("["); List<Category> categorys = categoryManager.getRoot(); int i = 0; for (Category category : categorys) { if (i > 0) { jsonString.append(","); } jsonString.append(toJSONString(category)); i++; } jsonString.append("]"); return jsonString.toString(); } // ==================== 产生jquery.treeview的jsonstring 结束=================// }
写完收功,希望能帮到正在使用这个treeview的朋友点小忙,自己以后再使用的时候,也可以再翻看一下这篇笔记,不至于搞忘记用法了。
发表评论
-
nginx代理IIS轻松实现支持JSP,PHP,ASP平台
2012-05-12 21:16 1625通过使用高效代理服务器nginx代理IIS轻松实现支持JSP, ... -
OpenSessionInViewFilter的使用
2011-06-22 11:34 734一、作用 Spring为我们解决Hibernate的Sess ... -
tomcat服务器使用url rewrite1
2011-05-19 18:25 1479让tomcat服务器使用url rewrite1. 第 ... -
CountDownLatch闭锁详解
2011-05-09 10:29 1321闭锁(Latch) 闭锁(Latch):一种同步方法,可以延 ... -
memcache/memcached/memcachedb 配置、安装
2011-05-05 15:44 1204memcache/memcached/memcachedb ... -
集群的可扩展性及其分布式体系结构
2011-03-17 14:54 1106常见的平衡算法 一般 ... -
strust2防止重复提交
2011-03-15 10:05 1128在请求表单中添加<s:token></s:t ... -
源码中没有任何错误目录中还存在红叉
2011-02-26 17:04 772查看.classpath文件。修改正确配置!lib与src -
长连接与短连接
2011-01-04 15:44 1116长连接与短连接 所谓长连接,指在一个TCP连接上可以连续发送 ... -
带“+”号的参数值通过url传递,后台取不到正确值
2010-11-29 15:19 2484带“+”号的参数值通过url传递,后台取不到正确值 问题是这样 ... -
JCom的使用
2010-11-08 11:15 2777JCom可以支持打印,支持生成word,生成Excel,并且可 ... -
利用java操作Excel文件
2010-10-28 16:45 751利用java操作Excel文件 很久以来都想 ... -
XSL将XML转换成HTML文件 js方法
2010-10-22 14:34 3018JavaScript解决方案XSL是如何将XML转换成HTML ... -
web.xml详解
2010-10-22 09:18 673部署描述符实际上是一个XML文件,包含了很多描述servlet ... -
jsvalidation表单验证框架使用相关问题
2010-10-05 18:57 11331、如果验证框架没有起作用,就先把验证框架的js文件、x ... -
java中调用c(c++)写的dll 文件的实现及步骤
2010-09-08 10:08 1821JNI使用技巧点滴本文为 ... -
我的站点
2010-01-09 10:43 0www.51sj.com 我要设计 www.52sj.co ... -
Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
2009-12-18 21:31 2336说明: 在创建数据库时输入的密码,是修改系统默认的密码,以sy ... -
jdbc连接各种数据库
2009-12-18 21:08 816一、jsp连接Oracle8/8i/9i数据库(用thin模式 ... -
IOC
2009-11-02 11:36 1191介绍 IOC 作者:冰云 icecloud(AT) ...
相关推荐
jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery....
jsontree (jquery.treeview.js) jQuery插件版 treeview1.0jsontree (jquery.treeview.js) jQuery插件版 treeview1.0jsontree (jquery.treeview.js) jQuery插件版 treeview1.0jsontree (jquery.treeview.js) jQuery...
<link rel="stylesheet" href="css/jquery.treeview.css"> <script src="js/jquery.treeview.js"> ``` 在HTML结构中,创建一个无序列表(`<ul>`),用于展示树状结构。每个列表项(`<li>`)代表树的一个节点,子...
2. 解压缩后,将其中的“jquery.treeview.js”和对应的CSS文件(如“jquery.treeview.css”)放置到你的项目文件夹。 3. 在HTML文件中引用jQuery库和treeview的JS及CSS文件。 三、基本使用 1. HTML结构:创建一个...
本文将详细介绍jQuery Treeview.js的使用方法、核心功能以及在实际项目中的应用技巧。 一、jQuery Treeview.js介绍 jQuery Treeview.js是基于jQuery框架的一个轻量级插件,它能够将HTML列表转换成具有折叠和展开...
在 `jquery.treeview.js` 示例中,我们可能会看到如何应用和定制这个插件的各种功能。 首先,让我们了解 `jQuery.treeview` 的基本用法。要启用此插件,你需要在页面中引入 jQuery 库以及 `treeview.js` 文件。假设...
<script src="jsontree/jquery.treeview.js"> ``` ### 2. **CSS样式** `jQuery Treeview`还需要一个对应的CSS样式表来实现视觉效果。在`treeview1.0`压缩包中,可能包含一个默认的样式文件,例如`treeview.css`。...
在项目中使用jQuery Treeview.js 首先需要引入jQuery库和treeview插件的JS及CSS文件。你可以通过在HTML文件头部添加以下代码来完成这一步: ```html <link rel="stylesheet" href="jquery.treeview.css" type="text...
2. 接着,下载jQuery Treeview插件文件,包括CSS样式表(如`jquery.treeview.css`)和JavaScript文件(如`jquery.treeview.js`)。本例中的压缩包包含这两个文件。 3. 在HTML文件中,将CSS文件链接到`<head>`部分,...
本文将深入探讨jQuery Treeview的使用方法及其在实际应用中的示例。 首先,jQuery Treeview主要用于构建可交互的目录结构或菜单系统,它可以轻松地将HTML列表转换为具有展开/折叠功能的树形视图。这在处理诸如文件...
在本文中,我们将深入探讨如何使用Jquery.Treeview和Jquery UI来创建一个Web文件预览功能。这两个JavaScript库在Web开发中广泛用于增强用户体验,尤其是处理文件管理和展示。让我们一起详细了解一下它们的工作原理和...
首先,`jquery.treeview.css`是jQuery Treeview的核心样式文件。它定义了树节点的各种样式,如展开/折叠按钮、节点间的层次间距、选中状态等。通过调整这些样式,我们可以自定义树形视图的外观,使其与网站的整体...
<link rel="stylesheet" href="jquery.treeview.css"> <script src="jquery.js"> <script src="jquery.treeview.js"> ``` 接着,你可以对 HTML 结构进行标记,添加必要的类名以指示树形结构: ```html <li><a ...
<link rel="stylesheet" href="jquery.treeview.css"> <script src="jquery.js"> <script src="jquerytreeview.js"> ``` 接着,你可以创建一个基础的HTML结构来表示树形菜单,比如: ```html <ul id="treeview"> ...
以下是一个简单的示例,展示了如何使用jQuery和TreeView插件实现异步加载: ```javascript $("#treeview").treeview({ data: [], // 初始化时为空 collapseIcon: "fa fa-caret-right", expandIcon: "fa fa-caret...
1. 引入必要的jQuery库和插件:需要引入jquery.treeview.min.js树插件和jquery.contextmenu.r2.js右键菜单插件。 2. 准备JSON格式的数据源:可以使用AJAX方法动态从服务器获取数据,也可以直接定义在页面中。 3. ...
在项目中使用jQuery TreeView,首先需要确保已引入jQuery库。接着,将`jquery.tree.css`和`jQuery.tree.old.css`这两个CSS文件引入到HTML文档的`<head>`部分,它们分别提供了样式支持和旧版本的样式。同时,将`js`...