前篇文章简单介绍了静态生成树,这篇文章将通过后台把数据通过json形式传到前台,进行动态生成树。

本篇的程序所用框架为Spring MVC,可以很方便的通过controller层传json到前台。

前端jsp页面部分代码:

        $.get("${ctx}/tree/treeList",function(data){
tree(data);
});
function tree(data){
//树形菜单
$('#tree')
.on("changed.jstree", function (e, data) {
alert(data);
}).jstree({'core' : {'data' : data} });
}

controller层部分代码如下:

@Resource
    private ITreeService<TreeVo> treeService;

    @RequestMapping(value = "/treeList")
@ResponseBody
public List<TreeVo> treeList(HttpServletRequest req, Map<String, Object> rep) {
List<TreeVo> treeList=treeService.getTree();
return treeList;
}

model层TreeVo代码如下:

public class TreeVo {
private Long id; //保存该节点ID
private String parent; //保存父节点ID
private String text; //保存名称(因jstree识别text,故该属性设为为text,而非name)
// private List<Tree> children;
……
…… (get set方法)
……
}

service 层代码如下:

本节只简单介绍如何处理数据。
举例从数据库获取的数据类型如下:
id   path    name
1   1.1      top1 
2   1.1.1   top11
3   1.1.2   top12
4    1.2     top2
通过程序把其转化为
id:1  parent:#    text:top1
id:2  parent:1    text:top11
id:3  parent:1    text:top12
id:4  parent:#    text:top2
protected void getTree(List<Entity> list, List<TreeVo> treeList) {
for (Entity dep : list) {
if (dep.getPath().substring(0, dep.getPath().lastIndexOf(".")).equals("1")) {
TreeVo tvo = new TreeVo();
tvo.setId(dep.getId());
tvo.setParent("#");
tvo.setText(dep.getName());
getChildPath(list, dep, treeList);
treeList.add(tvo);
}
}
} private void getChildPath(List<Entity> list, Entity parent, List<TreeVo> treeList) {
for (Entity dep : list) {
if (!dep.getPath().equals(parent.getPath()) && dep.getPath().substring(0, dep.getPath().lastIndexOf(".")).equals(parent.getPath())) {
TreeVo tvo = new TreeVo();
tvo.setId(dep.getId());
tvo.setText(dep.getName());
tvo.setParent(parent.getId().toString());
getChildPath(list, dep, treeList);
treeList.add(tvo);
}
}
}

都于使用Spring MVC 中的 @ResponseBody 传递json,若程序一切逻辑正常,却无法把json传至前台。可进行其下两步操作:

1. 查看配置文件是否正确,spring-mvc.xml 中部分代码如下:

    <mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- 将StringHttpMessageConverter的默认编码设为UTF-8 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean>
<!-- 将Jackson2HttpMessageConverter的默认格式化输出设为true -->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="prettyPrint" value="true"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>

2.查看是否引入jackson等相应jar包。

jstree动态生成树的更多相关文章

  1. jstree静态生成树并为树添加触发事件

    本章将介绍如何简单的使用jstree生成树(生成树的数据是静态的),并为树添加点击事件. 1. 建一个jsp页面,引入jquery.js(在其他js前引用),引入jstree所需的js,css文件(可 ...

  2. 使用jsTree动态加载节点

    因为项目的需要,需要做一个树状菜单,并且节点是动态加载的,也就是只要点击父节点,就会加载该节点下的子节点. 大致的效果实现如下图: 以上的实现就是通过jsTree实现的,一个基于JQuery的树状菜单 ...

  3. jsTree动态加载数据

    Views代码 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="view ...

  4. dTree 动态生成树

    http://luohua.iteye.com/blog/451453 dTree 主页:http://destroydrop.com/javascripts/tree/ dTree是个很方便在页面生 ...

  5. dTree动态生成树(后台处理,简化前台操作)

    dTree是个很方便在页面生成树的 js 控件,如果你下载了,我猜里在几分钟之内便能在页面上显示出一颗树来. 它本身给的例子是通过一些静态数据构造树,下面我说一种通过查询的数据动态构造树的方法. 例子 ...

  6. JSON动态生成树

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. ztree实现左边动态生成树,右边为具体信息功能

    页面原型图: 图片.png 功能需求:点击左边树上的子节点,像后台发送请求,将请求到的信息展示在右边的表单里面 前端代码实现: 引入css文档: <link rel="styleshe ...

  8. Ext.Net学习笔记23:Ext.Net TabPanel用法详解

    Ext.Net学习笔记23:Ext.Net TabPanel用法详解 上面的图片中给出了TabPanel的一个效果图,我们来看一下代码: <ext:TabPanel runat="se ...

  9. Spring多数据源解决方案

    Figure 2 多数据源的选择逻辑渗透至客户端 解决方案 Figure 3 采用Proxy模式来封转数据源选择逻辑 通过采用Proxy模式我们在方案实现中实现一个虚拟的数据源.并且通过它来封装数据源 ...

随机推荐

  1. WinForm 简单蒙版实现控件遮盖

    在Web上面要实现一个遮罩层或者说是蒙版吧,有了DIV那不算什么难事,只要给div定好位置和大小,把颜色的Alpha值设一下就有透明的效果.不过在Winform中实现起来就没那么简单了事.尝试过用一个 ...

  2. PHP多种形式发送邮件

    1. 使用 mail() 函数 没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发.这个按照各个系统不同而定.使用参考手册. 2. 使用管道的形式 昨天刚测试成功,使用 ...

  3. css3飞机起飞进度条

    效果:http://hovertree.com/texiao/css3/27/ 源码下载:http://hovertree.com/h/bjaf/pgwql1x2.htm 本效果使用Font Awes ...

  4. iOS阶段学习第16天笔记(Category-NSSet-SEL-NSIndexSet 操作)

    iOS学习(OC语言)知识点整理 一.NSSet.NSMutableSet集合的介绍 1)NSSet.NSMutableSet集合,元素是无序的,不能有重复的值. 2)用实例方法创建一个不可变集合对象 ...

  5. 炉石传说 C# 开发笔记 (初版)

    法术资料说明 1.资料的准备 从GitHub上面获得的工程里面,是没有XML卡牌资料配置的,这个是需要你自己生成的. 打开炉边处说的客户端 然后按下  卡牌资料生成 将炉石资料文件设定为 Github ...

  6. .net下mysql存储过程返回自定义值(原创)

    ado.net方法 public static string ExecuteQueryProc(string sConnStr, string sSql, Hashtable args) { MySq ...

  7. Nam Game

    哪一方最终给对方留下4的倍数个石头则win,即想方设法的给对方留下4的倍数个石头. 例如: 9(B win) A:3 B:2(B取2,给对方余4,对方则lose) A:1 | 2 | 3 B:3 | ...

  8. ahjesus code simith 存储过程模板

    <%------------------------------------------------------------------------------------------ * Au ...

  9. MYSQL 解锁与锁表

    解锁 第一种 show processlist; 找到锁进程,kill id ; 第二种 mysql>UNLOCK TABLES; 锁表 锁定数据表,避免在备份过程中,表被更新 mysql> ...

  10. 七个结构模式之装饰者模式(Decorator Pattern)

    定义: 使用组合的方法,动态给一个类增加一些额外的功能,避免因为使用子类继承而导致类继承结构复杂.并且可以保持和被装饰者同一个抽象接口,从而使客户端透明. 结构图: Component:抽象构件类,定 ...