public class Node { private int id; private int parentId; Node(){} Node(int id,int parentId){ this.id=id; this.parentId = parentId; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getParentId() { return parentId; } public void setParentId(int parentId) { this.parentId = parentId; } } 下面这个类先手工建立List,在实际应用中是从数据库读取List,然后再Main方法里调用递归方法,得到Json字符串 Java代码 import java.util.ArrayList; import java.util.Iterator; import java.util.List;
public class Recursion { List nodeList =new ArrayList(); Recursion(){//构造方法里初始化模拟List Node node1 = new Node(1,0); Node node2 = new Node(2,1); Node node3 = new Node(3,1); Node node4 = new Node(4,2); Node node5 = new Node(5,2); Node node6 = new Node(6,2); Node node7 = new Node(7,6); Node node8 = new Node(8,6);
nodeList.add(node1); nodeList.add(node2); nodeList.add(node3); nodeList.add(node4); nodeList.add(node5); nodeList.add(node6); nodeList.add(node7); nodeList.add(node8); } StringBuffer returnStr=new StringBuffer(); public void recursionFn(List list , Node node){ if(hasChild(list,node)){ returnStr.append("{id:"); returnStr.append(node.getId()); returnStr.append(",parentId:"); returnStr.append(node.getParentId()); returnStr.append(",children:["); List childList = getChildList(list,node); Iterator it = childList.iterator(); while(it.hasNext()){ Node n = (Node)it.next(); recursionFn(list,n); } returnStr.append("]},"); }else{ returnStr.append("{id:"); returnStr.append(node.getId()); returnStr.append(",parentId:"); returnStr.append(node.getParentId()); returnStr.append(",leaf:true},"); }
} public boolean hasChild(List list, Node node){ //判断是否有子节点 return getChildList(list,node).size()>0?true:false; } public List getChildList(List list , Node node){ //得到子节点列表 List li = new ArrayList(); Iterator it = list.iterator(); while(it.hasNext()){ Node n = (Node)it.next(); if(n.getParentId()==node.getId()){ li.add(n); } } return li; } public String modifyStr(String returnStr){//修饰一下才能满足Extjs的Json格式 return ("["+returnStr+"]").replaceAll(",]", "]");
} public static void main(String[] args) { Recursion r = new Recursion(); r.recursionFn(r.nodeList, new Node(1,0)); System.out.println(r.modifyStr(r.returnStr.toString())); } }
相关推荐
总结来说,"JSP EXT 遍历 TREE"涉及的技术点包括:EXT框架的使用,TREE组件的遍历,JavaScript与JSP的交互,以及JSON数据作为TREE的数据源。通过理解和应用这些知识点,开发者能够创建出动态的、交互式的TREE视图,...
7.5.11 树节点:ext.data.nodeinterface与ext.data.tree / 364 7.5.12 store的方法 / 366 7.5.13 store的事件 / 368 7.5.14 store管理器:ext.data.storemanager / 369 7.6 综合实例 / 369 7.6.1 远程读取json...
EXT框架,作为一个强大的前端组件库,提供了丰富的UI控件,其中包括树形组件(EXT树),它能够根据JSON数据生成交互式的树状结构。 EXT树是EXT JS库中的一个组件,用于展示层级关系的数据,比如目录结构、组织架构...
2. **定义树的配置**:创建一个`Ext.tree.Panel`对象,设置其配置属性。这些配置可能包括: - `title`:树的标题。 - `store`:用于存储树节点数据的`Ext.data.TreeStore`实例,通常配置`proxy`来指定AJAX请求的...
Ext TreeCombo是一种UI组件,它将传统的下拉框与树形控件(Tree)结合起来,提供了一种交互式的、具有层级结构的下拉选择。用户在输入框中输入文字,可以筛选出符合输入的树节点,同时,点击下拉按钮会展示整个树形...
服务器端返回的数据通常是一个JSON数组,每个元素代表一个子节点,包含`text`、`id`等属性,还可以有`children`属性来表示子节点列表,形成递归结构。例如: ```json [ { "id": "1", "text": "节点1", ...
var tree = new Ext.tree.TreePanel({ height: 300, width: 400, animate: true, enableDD: true, containerScroll: true, rootVisible: false, frame: true, loader: new Ext.tree.TreeLoader({ dataUrl:...
- ExtJS提供了`Ext.tree.Panel`组件来显示树形菜单。我们需要配置数据源,通常是`store`,设置`proxy`为`ajax`类型,指定`url`为后端接口URL,用于获取JSON数据。 - 数据加载后,`tree.Panel`会自动解析JSON并渲染...
这个“Ext3.4无限极tree grid demo”是展示如何在Ext3.4中实现一个具有无限层级的树形网格视图,它结合了树结构和表格数据的显示,提供了灵活的数据组织和交互方式。 在Ext3.4中,Tree Grid是一种特殊的组件,它...
`treeJson`表示JSON格式的树结构数据,用于初始化树形结构。 6. **初始化树结构**: `initTree`函数接收父节点`p`和对象`o`,根据`o`的属性创建新的树节点,并递归处理子节点。`node.on('click', function(n))`和`...
EXT框架中的树结构(Tree)是一种常用的数据展示方式,尤其在复杂的权限管理和分类系统中。在Faceye基础版中,EXT树被广泛应用,如台台管理、RSS订阅分类、用户博客分类、网址导航分类、开源项目分类、博客管理等多...
var tree = new Ext.tree.TreePanel({ height: 300, width: 400, animate: true, enableDD: true, containerScroll: true, rootVisible: false, frame: true, loader: new Ext.tree.TreeLoader({dataUrl: '...
var tree = new Ext.tree.TreePanel({ id: 'myTree', width: 300, height: 200, renderTo: document.body, // 其他配置项... }); ``` 2. **加载数据**:通常,服务器会返回一个JSON格式的列表,包含每个...
它提供了`Ext.tree.TreePanel`组件,可以方便地在浏览器端渲染TreeView。我们需要将Java后端返回的JSON数据转换为Extjs可以理解的格式,然后配置TreePanel以显示这些数据。这可能包括设置树的根节点、定义节点的扩展...
首先,**使用现成插件**,例如文件名为`ext-2.2`可能指的是ExtJS,这是一个流行的JavaScript框架,提供了一套完整的组件库,其中包括用于生成树形结构的TreePanel组件。ExtJS的TreePanel提供了丰富的功能,如节点...