easyui struts后台实现tree返回json数据
首先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数据的更多相关文章
- 用ajax获取后台数据,返回json数据,怎么在前台使用?
用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...
- 前台返回json数据的常用方式+常用的AJAX请求后台数据方式
我个人开发常用的如下所示: 之所以像下面这样下,一是前台Ajax,二是为安卓提供接口数据 现在常用的是返回JSON数据,XML的时代一去不复返 JSON相对于XML要轻量级的多 对JSON不是十分熟悉 ...
- struts返回json数据
想要在struts中返回json格式数据有两种办法. 1.使用servlet的输出流 实际上就是在struts中获取response对象的输出流.然后写入你要返回的json数据,本质和用servlet ...
- Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
之前写过一篇记录文章,写的是将一个比较复杂的数据结构在前台组合起来后传递到后台. 当时并不太了解@RequestBody,也并没有使用js提供的JSON.stringify()方法 所有都是自己写的, ...
- struts框架返回json数据
设置返回result类型为json格式 <package name="cn.konngo.action" namespace="/" extends=&q ...
- 【Struts2】SSH如何返回JSON数据
在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...
- 深入了解Struts2返回JSON数据的原理
首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...
- 如何在Crystal Portlet中正确返回JSON数据给AJAX请求?
当Crystal Portlet中需要采用Ajax请求,并让后台返回Json数据时,如何才能正确.方便的返回Json数据呢? 以下两种方法均可: 方法一:Ajax请求时,采用RenderURL,对应P ...
- struts2 的验证框架validation如何返回json数据 以方便ajax交互
struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror />才能取出,(EL应该也可以). 如果使 ...
随机推荐
- axure团队合作开发原型图
谁是人画或其他原型图的头,但在基本制度的发展时,.我们分配一些人画的原型,其他部分干. 再画一个原型不再是一个人画,一起画,假设大家都各自画自己那一部分.最后再由一个人来整合的画.是非常麻烦. 咱平时 ...
- Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试
Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试 需要FQ才能安装,使用时应该不用FQ了,除非使用postman的历史记录功能: 非常棒的C ...
- 西门子PLC学习笔记8-(计时器)
计时器port这包括:信号输入.时间.复位信号.出口.[计时器剩余时间(BI二进制表示法.BCD码表示)其输出被存储MW] 定时器包括::S_PULSE(脉冲定时器).S_PEXT(延时脉冲定时器). ...
- [CLR via C#]4. 类型基础及类型、对象、栈和堆运行时的相互联系
原文:[CLR via C#]4. 类型基础及类型.对象.栈和堆运行时的相互联系 CLR要求所有类型最终都要从System.Object派生.也就是所,下面的两个定义是完全相同的, //隐式派生自Sy ...
- easyui datagrid 单元格编辑 即见即所得,MVC菜单维护,扫描增加
效果如图: 参见 EasyUI 官方 Demo 及文档 @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Lay ...
- SSAS系列——【06】多维数据(创建Cube)
原文:SSAS系列--[06]多维数据(创建Cube) 1.文件类型说明 项目定义文件 (.dwproj).项目用户设置 (.dwproj.user).数据源文件 (.ds).数据源视图文件 (.ds ...
- SSAS系列——【05】多维数据(编程体系结构)
原文:SSAS系列--[05]多维数据(编程体系结构) 1.什么是AMO? 翻译:AMO是SSAS中一个完整的管理类集合,它在Microsoft.AnalysisServices命名空间下,我们可以在 ...
- VisualStudio2012轻松把JSON数据转换到POCO的代码
原文:VisualStudio2012轻松把JSON数据转换到POCO的代码 在Visual Studio 2012中轻松把JSON数据转换到POCO的代码,首先你需要安装Web Esse ...
- Swift 简简单单实现手机九宫格手势密码解锁
原文:Swift 简简单单实现手机九宫格手势密码解锁 大家可以看到我之前的文章[HTML5 Canvas简简单单实现手机九宫格手势密码解锁] 本文是使用苹果语言对其进行了移植 颜色配色是拾取的支付宝的 ...
- C#验证IP地址
using System.Net; try { IPAddress a = IPAddress.Parse(输入的IP字符串); } catch (System.Exception ex) { Mes ...