Extjs通过structs2生成树结构

Extjs为我们提供了强大的树的生成方式,我们不必通过原始的js去生成树形结构。在这里我做了一个简单的树结构生成。代码如下,同时在后台使用了fastjson-1.1.15.jar的jar包生成json对象,Extjs使用的是3.2版本。

Java文件代码:

Bo类:      

import java.util.List;

public class TreeBo {
 private int id;//节点id
 private String text;//节点显示名称
 private String cls;//节点图标
 private Boolean leaf;//是否叶子节点
 private List<TreeBo> children;//下级节点

 .......//省略了相应的getter/setter方法

}

 

 

action类:

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.alibaba.fastjson.JSONObject;
import com.test.bo.TreeBo;

public class FunctionListAction {

private List<TreeBo> treeList;

  public void testTree(){
  treeList = new ArrayList<TreeBo>();
  TreeBo cdAllMilitary = new TreeBo();
  cdAllMilitary.setText("成都军区");
  cdAllMilitary.setCls("folder");
  cdAllMilitary.setLeaf(false);
  cdAllMilitary.setId(1);
  treeList.add(cdAllMilitary);

  List<TreeBo> cdMilitary = new ArrayList<TreeBo>();
  cdAllMilitary.setChildren(cdMilitary);
  TreeBo cq = new TreeBo();
  cq.setText("重庆军区");
  cq.setCls("folder");
  cq.setLeaf(true);
  cq.setId(11);
  cdMilitary.add(cq);
  TreeBo km = new TreeBo();
  km.setText("昆明军区");
  km.setCls("folder");
  km.setLeaf(true);
  km.setId(12);
  cdMilitary.add(km);

  TreeBo bjAllMilitary = new TreeBo();
  bjAllMilitary.setText("北京军区");
  bjAllMilitary.setCls("folder");
  bjAllMilitary.setLeaf(false);
  bjAllMilitary.setId(2);
  treeList.add(bjAllMilitary);

  List<TreeBo> bjMilitary = new ArrayList<TreeBo>();
  bjAllMilitary.setChildren(bjMilitary);
  TreeBo bj = new TreeBo();
  bj.setText("北京军区");
  bj.setCls("folder");
  bj.setLeaf(true);
  bj.setId(21);
  bjMilitary.add(bj);

  TreeBo tj = new TreeBo();
  tj.setText("天津军区");
  tj.setCls("folder");
  tj.setLeaf(true);
  tj.setId(22);
  bjMilitary.add(tj);

  HttpServletResponse response = ServletActionContext.getResponse();
  response.setCharacterEncoding("utf-8");
  try {
   PrintWriter writer = response.getWriter();
   writer.print(JSONObject.toJSON(treeList).toString());
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 

JSP文件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
     <link rel="stylesheet" type="text/css" href="./ext/resources/css/ext-all.css">
     <script type="text/javascript" src="./ext/adapter/ext/ext-base.js"></script>
     <script type="text/javascript" src="./ext/ext-all.js"></script>
     <script type="text/javascript" src="./js/tree.js"></script>
     <link rel="stylesheet" type="text/css" href="./css/menu.css">

</head>
  <body>
    <div id="container">
     <div id="tree"></div>
 </div>
  </body>
</html>

 

css文件:主要是menu.css

#container {
    width:650px;
    height:330px;
    border:3px solid #c3daf9;

}

 

js文件:主要是tree.js

Ext.onReady(function(){

var tree = new Ext.tree.TreePanel({
     el:'tree',
     autoScroll:true,
     animate:true,
     enableDD:true,
     containerScroll:true,
     loader:new Ext.tree.TreeLoader({dataUrl:'function_testTree.action'})
 });
 var root = new Ext.tree.AsyncTreeNode({
     text:'中国军区',
     draggable:false,
     id:'testTree'
 });
 tree.setRootNode(root);
 tree.render();
 root.expand();
});

 

struct配置文件: 

<?xml version = "1.0"encoding = "UTF-8" ? ><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd" >

<struts >     <package name = "struts2"namespace = "/"extends = "struts-default" >

    <action name = "function_*"class = "com.test.action.FunctionListAction"method = "{1}" >

    </action>

  </package >

</struts>/

 

 效果如图所示:

 

 

时间: 2024-10-26 06:03:05

Extjs通过structs2生成树结构的相关文章

winform-【Winform】如何从数据库多个表中读数据生成树结构?

问题描述 [Winform]如何从数据库多个表中读数据生成树结构? 现在只会单表,但这个要求大概有四五个表需要从表一中读取父节点然后再表二表三一个个读没找到实例,请问各位多表改怎么做? 解决方案 可以用joingoogle sql inner joingoogle sql left join 解决方案二: 能讲一下表的结构都是怎样的吗? 树形结构,一般父节点和子节点都是相似的(IdparentId), 所以应该都是存储在同一个表中.如果表结构相同但在不同表,可以使用union合并. 生成树,首先

json数据转成树结构的问题

问题描述 json数据转成树结构的问题 求大神指导如何在js端把如下json数据改造成一个树结构在网页中显示出来. json=[{"children":[{"children":[],"ebtype":"传感器模块","ebuuid":"b9d81030","href":"nodeinfo.j?nodeaddr=-17960","href

Delphi实现树型结构具体实例_Delphi

复制代码 代码如下: unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ComCtrls, DB, ADODB;type  PNodeInfoEx = ^TNodeInfoEx;  TNodeInfoEx = Packed Record      NodeID    : Integer;      Pare

一种树型控件在Delphi中的使用方法

摘 要 树型控件是一种有效的表示方法,在数据库应用程序的开发中经常用它可视化表示对象之间的层次关系.本文介绍了Developer Express inc. 的ExpressQuantumGrid Suite中树型控件 TdxDBTreeList 的使用方法和技巧,特别是由多关系表构成树型结构的情况. 关键词 树型控件,TdxDBTreeList,多关系表 简介 树型控件是一种有效的表示方法,在数据库应用程序的开发中经常用它可视化表示对象之间的层次关系,便于用户的操作和使用.比如:表示一个公司部门

交换机的工作原理详细介绍

交换机的工作原理: 交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中. 交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发. 如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发.这一过程称之为泛洪(flood). 广播帧和组播帧向所有的端口转发. 交换机的三个主要功能: 学习:以太网交换机了解每一端口相连设备的MAC地址,并将地址同相应的端口映射起来存放在交换机缓存中的MAC地址表中. 转发/过滤:当一个

树结构控件:jQuery zTree

[简介] zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件  兼容 IE.FireFox.Chrome 等浏览器  在一个页面内可同时生成多个 Tree 实例  支持 JSON 数据  支持一次性静态生成 和 Ajax 异步加载 两种方式  支持多种事件响应及反馈  支持 Tree 的节点移动.编辑.删除  支持任意更换皮肤 / 个性化图标(依靠css)  支持极其灵活的 checkbox 或 radio 选择功能  简单的参数配置实现 灵活多变的功能

Treeview如何绑定

问题描述 asp.net中如何用Treeview绑定数据库中的数据如下例子怎么实现挖掘机//根节点卡特://节点(345330325320320DL320C320B200312307305.5)//包函的子节点小松:(3603002702202102001301206055)沃尔沃:(46036029024021014055)神刚:(36030024021020013060)每个挖掘机品牌下面对应这么多的型号,要动态的从数据库从读出来要每个挖掘机品牌对应不同的型号可以对这些挖掘机品牌和型号进行增

完成了AJAX树附原理分析

首先要纠正一个上篇博文<Rails中的Ajax初体验>中的一个错误:上篇博文中,我说"要在Rails中使用Ajax,局部模板是必须的",经实践检验,是错误的,特此更正.实践是检验真理的唯一标准,此言不虚.经过项目中真正通过RJS实现AJAX树,可知,通过使用insert_html.replace_html等辅助方法,可直接操作页面上的元素,无须使用局部模板. 整个的实现过程还是有点曲折: 之前使用的生成树结构的页面,是利用从服务器获取的所有数据,通过一系列javascrip

设备树概述【转】

转自:http://docs.oracle.com/cd/E38902_01/html/E38873/kernelovr-64300.html 设备树概述 Oracle Solaris OS 中的设备表示为互连的设备信息节点树.设备树描述特定计算机的已装入设备的配置. 设备树组件 系统将会生成树结构,其中包含有关引导时连接到计算机的设备的信息.此外,系统正常运行时也可以动态重新配置设备树.设备树从表示平台的根设备节点开始. 根节点下面是设备树的分支.分支由一个或多个总线结点设备和一个终止叶设备组