首先jsp页面有一ul用于展现tree

<ul id="trueULid"></ul>

加载tree

<script type="text/javascript">
$(function() {
$('#trueULid').tree( {
url : 'admin/HhTestTree.do'
});
});
</script>

配置action

<action name="HhTestTree" method="testTree"
class="org.bkgd.ehome.jeeplugin.message.web.action.ActionHhMessageTypeQuery">
<result type="json">
<param name="root">testTreeNodes</param>
</result>
</action>

需要封装对象tree

public class TestTreeNode implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String id;
private String text;
private String state = "open";
private boolean checked; public TestTreeNode(String id, String text, String state, boolean checked) {
this.id = id;
this.text = text;
this.state = state;
this.checked = checked;
}
public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getText() {
return text;
} public boolean isChecked() {
return checked;
} public void setChecked(boolean checked) {
this.checked = checked;
} public void setText(String text) {
this.text = text;
} public String getState() {
return state;
} public void setState(String state) {
this.state = state;
}
}

表结构如图

首先查询所有parentid为NONE的数据(测试数组件的ID为null)然后同时判断该节点下是否有子节点,
如果有则状态是关闭状态
当继续展开树的时候 会将该ID值传入,然后查询该节点的子节点。

action方法实现

private List<TestTreeNode> testTreeNodes = new ArrayList<TestTreeNode>();
private String id;// 树组件使用的ID public String testTree() {
try {
List<Map<String,Object>> list = aloneIMP.getTreeNodes(id).search().getResultList();
for(Map<String,Object> m:list){
//判断是否有子节点
List<Map<String,Object>> isHasChildren = aloneIMP.getTreeChildren(null).addUserWhere(" and parentid ='"+(String)m.get("ID")+"'").search().getResultList();
if(isHasChildren.size()==0){
testTreeNodes.add(new TestTreeNode((String)m.get("ID"),(String)m.get("NAME"),"open",false));
}else{
testTreeNodes.add(new TestTreeNode((String)m.get("ID"),(String)m.get("NAME"),"closed",false));
} }
} catch (SQLException e) {
e.printStackTrace();
}
return SUCCESS;
}

此方法不具公共性,是自己的一些封装实现。主要是如何进行查询节点,

getTreeNodes()的实现方法为:

@Override
public DataQuery getTreeNodes(String id) {
if(id==null){
dbQuery = DataQuery
.init(
query,
"hh_message_type",
"ID,STATE,PARENTID,NAME,TITLE").addUserWhere(" and parentid = 'NONE'");
}else{
dbQuery = DataQuery
.init(
query,
"hh_message_type",
"ID,STATE,PARENTID,NAME,TITLE").addUserWhere(" and parentid = '"+id+"'");
} return dbQuery;
}

getTreeChildren()的实现方法为:

@Override
public DataQuery getTreeChildren(DataQuery query) {
DataQuery dbQuery = DataQuery
.init(
query,
"hh_message_type",
"ID,STATE,PARENTID,NAME,TITLE");
return dbQuery;
}

实现效果图为:

修正版参见:EasyUI实现异步加载tree(整合Struts2)

项目源码下载:http://download.csdn.net/detail/itmyhome/7852021

easyui struts后台实现tree返回json数据的更多相关文章

  1. 用ajax获取后台数据,返回json数据,怎么在前台使用?

    用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...

  2. 前台返回json数据的常用方式+常用的AJAX请求后台数据方式

    我个人开发常用的如下所示: 之所以像下面这样下,一是前台Ajax,二是为安卓提供接口数据 现在常用的是返回JSON数据,XML的时代一去不复返 JSON相对于XML要轻量级的多 对JSON不是十分熟悉 ...

  3. struts返回json数据

    想要在struts中返回json格式数据有两种办法. 1.使用servlet的输出流 实际上就是在struts中获取response对象的输出流.然后写入你要返回的json数据,本质和用servlet ...

  4. Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法

    之前写过一篇记录文章,写的是将一个比较复杂的数据结构在前台组合起来后传递到后台. 当时并不太了解@RequestBody,也并没有使用js提供的JSON.stringify()方法 所有都是自己写的, ...

  5. struts框架返回json数据

    设置返回result类型为json格式 <package name="cn.konngo.action" namespace="/" extends=&q ...

  6. 【Struts2】SSH如何返回JSON数据

      在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...

  7. 深入了解Struts2返回JSON数据的原理

    首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...

  8. 如何在Crystal Portlet中正确返回JSON数据给AJAX请求?

    当Crystal Portlet中需要采用Ajax请求,并让后台返回Json数据时,如何才能正确.方便的返回Json数据呢? 以下两种方法均可: 方法一:Ajax请求时,采用RenderURL,对应P ...

  9. struts2 的验证框架validation如何返回json数据 以方便ajax交互

    struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror  />才能取出,(EL应该也可以). 如果使 ...

随机推荐

  1. 开源 java CMS - FreeCMS2.3员

    原文地址:http://javaz.cn/site/javaz/site_study/info/2015/28375.html​ 项目地址:http://www.freeteam.cn/ 会员注冊 打 ...

  2. HDU 1243 畅通project 并査集

    Total Submission(s): 31033    Accepted Submission(s): 16313 Problem Description 某省调查城镇交通状况,得到现有城镇道路统 ...

  3. 带格式分离两个RichEditControl的文本

    using( RichEditControl selector = new RichEditControl() { RtfText = richTextFromHtml } ) { DocumentR ...

  4. Reactive Extensions(Rx)并发浅析

    Reactive Extensions(Rx)并发浅析 iSun Design & Code .Net并行编程 - Reactive Extensions(Rx)并发浅析 关于Reactive ...

  5. C语言 ## __VA_ARGS__ 宏

    在GNU C中,宏可以接受可变数目的参数,就象函数一样 可以把__VA_ARGS__看成是将...赋值给该宏 //注意这里不能在函数中调用abc() #include <stdio.h> ...

  6. 怎样下载并编译Android4.0内核源代码goldfish(图文)

    关于怎样下载Android4.0源代码,请查看我的博客内还有一篇文章(相同是图文教程): http://blog.csdn.net/flydream0/article/details/7036156 ...

  7. 怎样将IPhone应用程序软件公布到应用程序商店?

    转自:http://www.shtion.com/667.html 怎样将IPhone应用程序软件公布到应用程序商店? 2009年10月19日公布 分类: App store, iphone, 手机应 ...

  8. HDU 5045 Contest

    pid=5045">主题链接~~> 做题感悟:比赛时这题后来才写的,有点小尴尬.两个人商议着写写了非常久才写出来,I want to Powerful ,I believe me ...

  9. POJ 3928 &amp; HDU 2492 Ping pong(树阵评价倒数)

    主题链接: PKU:http://poj.org/problem?id=3928 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Descript ...

  10. oracle中的DECODE

    原文:oracle中的DECODE   DECODE函数相当于一条件语句(IF).它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值.函数的参数列表是由若干数值及其对应结果值组成的若干序偶 ...