免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3555 | 回复: 0
打印 上一主题 下一主题

java递归实现easyui树节点 [复制链接]

论坛徽章:
1
2015亚冠之卡尔希纳萨夫
日期:2015-10-16 14:12:46
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-17 09:35 |只看该作者 |倒序浏览
适用于javaWeb结合easyui使用
easyui的Tree节点JSON格式
  1. [{   
  2.     "id":1,   
  3.     "text":"Folder1",   
  4.     "iconCls":"icon-save",   
  5.     "children":[{   
  6.         "text":"File1",   
  7.         "checked":true  
  8.     },{   
  9.         "text":"Books",   
  10.         "state":"open",   
  11.         "attributes":{   
  12.             "url":"/demo/book/abc",   
  13.             "price":100   
  14.         },   
  15.         "children":[{   
  16.             "text":"PhotoShop",   
  17.             "checked":true  
  18.         },{   
  19.             "id": 8,   
  20.             "text":"Sub Bookds",   
  21.             "state":"closed"  
  22.         }]   
  23.     }]   
  24. },{   
  25.     "text":"Languages",   
  26.     "state":"closed",   
  27.     "children":[{   
  28.         "text":"Java"  
  29.     },{   
  30.         "text":"C#"  
  31.     }]   
  32. }]  
复制代码
  1. /**
  2. * 树 json model 数据
  3. * @author glq
  4. *
  5. */
  6. public class JsonTreeData {

  7.     public String id;       //json id
  8.     public String pid;      //
  9.     public String text;     //json 显示文本
  10.     public String state;    //json 'open','closed'
  11.     public List<JsonTreeData> children;       //
  12.      
  13.     public String getId() {
  14.         return id;
  15.     }
  16.     public void setId(String id) {
  17.         this.id = id;
  18.     }
  19.     public String getText() {
  20.         return text;
  21.     }
  22.     public void setText(String text) {
  23.         this.text = text;
  24.     }
  25.     public String getState() {
  26.         return state;
  27.     }
  28.     public void setState(String state) {
  29.         this.state = state;
  30.     }
  31.     public List<JsonTreeData> getChildren() {
  32.         return children;
  33.     }
  34.     public void setChildren(List<JsonTreeData> children) {
  35.         this.children = children;
  36.     }
  37.     public String getPid() {
  38.         return pid;
  39.     }
  40.     public void setPid(String pid) {
  41.         this.pid = pid;
  42.     }
  43. }
复制代码
  1. /**
  2. * @ClassName: TreeNodeUtil
  3. * @Description 描述: 获取树节点集合(这里用一句话描述这个类的作用)
  4. * @author: 青柠loft
  5. * @date 最后修改时间: 2015年6月9日 下午6:39:28
  6. *
  7. */
  8. public class TreeNodeUtil {

  9.     /**
  10.     * @Title: getfatherNode
  11.     * @Description 方法描述: 父节点
  12.     * @param 设定文件: @param treeDataList
  13.     * @param 设定文件: @return   
  14.     * @return 返回类型:List<JsonTreeData>   
  15.     * @throws
  16.     * @date 最后修改时间:2015年6月9日 下午6:39:26
  17.     */
  18.     public final static List<JsonTreeData> getfatherNode(List<JsonTreeData> treeDataList) {
  19.         List<JsonTreeData> newTreeDataList = new ArrayList<JsonTreeData>();
  20.         for (JsonTreeData jsonTreeData : treeDataList) {
  21.             if(jsonTreeData.getPid() == null) {
  22.                 //获取父节点下的子节点
  23.                 jsonTreeData.setChildren(getChildrenNode(jsonTreeData.getId(),treeDataList));
  24.                 jsonTreeData.setState("open");
  25.                 newTreeDataList.add(jsonTreeData);
  26.             }
  27.         }
  28.         return newTreeDataList;
  29.     }
  30.      
  31.     /**
  32.     * @Title: getChildrenNode
  33.     * @Description 方法描述: 子节点
  34.     * @param 设定文件: @param pid
  35.     * @param 设定文件: @param treeDataList
  36.     * @param 设定文件: @return   
  37.     * @return 返回类型:List<JsonTreeData>   
  38.     * @throws
  39.     * @date 最后修改时间:2015年6月9日 下午6:39:50
  40.     */
  41.     private final static List<JsonTreeData> getChildrenNode(String pid , List<JsonTreeData> treeDataList) {
  42.         List<JsonTreeData> newTreeDataList = new ArrayList<JsonTreeData>();
  43.         for (JsonTreeData jsonTreeData : treeDataList) {
  44.             if(jsonTreeData.getPid() == null)  continue;
  45.             //这是一个子节点
  46.             if(jsonTreeData.getPid().equals(pid)){
  47.                 //递归获取子节点下的子节点
  48.                 jsonTreeData.setChildren(getChildrenNode(jsonTreeData.getId() , treeDataList));
  49.                 newTreeDataList.add(jsonTreeData);
  50.             }
  51.         }
  52.         return newTreeDataList;
  53.     }
  54. }
复制代码
  1. /*
  2. *serviceImpl 业务实现
  3. */
  4. public List<JsonTreeData> getGoodsSpec(HtSpecifications spec) {
  5.         List<HtSpecifications> resultList = htSpecificationsDaoImpl.findAll("getSpecList", spec);
  6.         List<JsonTreeData> treeDataList = new ArrayList<JsonTreeData>();
  7.          /*为了整理成公用的方法,所以将查询结果进行二次转换。
  8.           * 其中specid为主键ID,varchar类型UUID生成
  9.           * parentid为父ID
  10.           * specname为节点名称
  11.           * */
  12.         for (HtSpecifications htSpecifications : resultList) {
  13.             JsonTreeData treeData = new JsonTreeData();
  14.             treeData.setId(htSpecifications.getSpecid());
  15.             treeData.setPid(htSpecifications.getParentid());
  16.             treeData.setText(htSpecifications.getSpecname());
  17.             treeDataList.add(treeData);
  18.         }
  19.         //最后得到结果集,经过FirstJSON转换后就可得所需的json格式
  20.         List<JsonTreeData> newTreeDataList = TreeNodeUtil.getfatherNode(treeDataList);
  21.         return newTreeDataList;
  22.     }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP