`
- 浏览:
14379 次
- 性别:
- 来自:
杭州
-
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()));
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
总结来说,"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({ 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提供了丰富的功能,如节点...