easyui struts后台实现tree返回json数据

本文介绍如何使用EasyUI和Struts2在后台生成并返回JSON数据以构建树形结构。首先,展示了一个包含ul元素的JSP页面,用于呈现树结构。接着,详细阐述了加载树的过程,包括查询无父节点的数据,并根据节点是否存在子节点来决定其展开状态。在Struts2的action方法中,实现了getTreeNodes()函数,用于获取树节点数据。最后,提供了修正版的实现链接及项目源码下载地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

               

首先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 = 1Lprivate 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;// 树组件使用的IDpublic 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()的实现方法为:

@Overridepublic 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


           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

《宾馆客房管理系统》是一个基于C#与MySQL的项目,旨在帮助学习者掌握数据库管理和系统开发知识。该项目通过完整代码实现,将编程技术应用于宾馆客房管理的实际业务场景。 C#是微软开发的面向对象编程语言,广泛用于Windows应用程序开发。在本项目中,C#用于构建用户界面、处理业务逻辑以及与数据库交互。它拥有丰富的类库,便于开发复杂图形用户界面(GUI),并通过ADO.NET组件实现与MySQL数据库的连接。MySQL是一种流行的开源关系型数据库管理系统(RDBMS),常用于Web应用程序,用于存储客房、预订、客户等核心数据。通过SQL语句,开发者可对数据进行增、删、改、查操作。系统中可能涉及“客房表”“预订表”“客户表”等,包含客房编号、类型、价格、预订日期等字段。 数据库连接是系统的关键部分。C#通过ADO.NET的SqlConnection类连接MySQL数据库,连接字符串包含服务器地址、数据库名称、用户名和密码。用户下载项目后,需根据本地环境修改连接字符串中的用户名和密码。系统主要功能模块包括:客房管理,可展示、添加、修改、删除客房信息;预订管理,处理预订的查看、新增、修改和取消;客户管理,存储和管理客户个人信息;查询功能,支持按客房类型、价格范围、预订日期等条件查询;报表和统计功能,生成入住率、收入统计等报表辅助决策。开发者需编写C#方法对应数据库操作,同时设计直观易用的界面,方便用户完成预订流程。项目中的MySQL文件可能是数据库脚本或配置文件,包含建表、数据填充及权限设置等内容,用户需在本地测试前运行脚本设置数据库环境。 总之,该系统结合C#和MySQL,为学习者提供了一个涵盖数据库设计、业务逻辑处理和界面开发的综合实践案例,有助于提升开发者在数据库应用和系统集成方面的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值