首先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. linux_ssky-keygen + ssh-copy-id 无密码登陆远程LINUX主机

    使用下例中ssky-keygen和ssh-copy-id,仅需通过3个步骤的简单设置而无需输入密码就能登录远程Linux主机. ssh-keygen 创建公钥和密钥. ssh-copy-id 把本地主 ...

  2. Java对象比较器对泛型List进行排序-Demo

    针对形如:字段1 字段2 字段3 字段n 1 hello 26 7891 world 89 5562 what 55 4562 the 85 452 fuck 55 995 haha 98 455 以 ...

  3. MFC 界面编程 可参考资料

    http://www.codeproject.com/Articles/26887/A-user-draw-button-that-supports-PNG-files-with-tr http:// ...

  4. Python什么是值或引用函数参数

    这篇文章是Python前往遇到有疑问的功能. 下面一段是原有的基础教程Python函数. 按值传递參数和按引用传递參数 全部參数(自变量)在Python里都是按引用传递.假设你在函数里改动了參数,那么 ...

  5. libvlc media player in C# (part 1)

    原文 http://www.helyar.net/2009/libvlc-media-player-in-c/ There seems to be a massive misconception ab ...

  6. shell 水平测试

    http://bbs.chinaunix.net/thread-476260-1-1.html 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  7. mysql通过字段注释查找字段名称

    原文:mysql通过字段注释查找字段名称 有时候表的字段太多,只是大致记得表的注释,想通过字段注释查找字段名称,可以用如下语句: SELECT COLUMN_NAME,column_comment F ...

  8. GoogleGoogle搜索解析

    GoogleGoogle搜索解析 是一个类似Google趋势SEO 在 线keyword工具.它的正式口号提出“在搜索些什么”.利用Google搜索解析,能够比較特定区域.类别.时间范围以及搜索资源之 ...

  9. 开始DDD

    如何开始DDD(完) 连续写了两篇文章,这一篇我想是序的完结篇了.结合用户注册的例子再将他简单丰富一下.在这里只添加一个简单需求,就是用户注册成功后给用户发一封邮件.补充一下之前的代码 public ...

  10. C#实现函数根据返回类型重载

    一直以来都很奇怪为何C#不能直接支持函数返回值重载, 比如如下两个函数是编译不过的 Public Class DbHelper { Public Static int ExecuteScalar(); ...