java递归菜单树转换成pojo对象_java

复制代码 代码如下:

  package com.cjonline.foundation.authority.pojo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import com.cjonline.foundation.util.CheckNullEmpty;
/**
 * 实现递归的帮助类,最终的结果可以描述成如下:
 * 根(root)
 * --1(子系统1)
 * -----1.1
 * -------1.1.1
 * -------1.1.2
 * ------- ....
 * -----1.2
 * --2(子系统2)
 * -----2.1
 * -------2.1.1
 * -------2.1.2
 * ------- ....
 * -----2.2
 */
public class ModelList implements java.io.Serializable {
    private static final Logger logger = Logger.getLogger(ModelList.class);
    private static final long serialVersionUID = 6384598893693849820L;
    /**
     * model代表当前模块
     */
    private SysModel model;
    /**
     * models代表当前模块下面的子模块,
     */
    private List<ModelList> subList = new ArrayList<ModelList>();
    /**
     * 菜单级别
     */
    private int flag = 0;
    public SysModel getModel() {
        return model;
    }
    public void setModel(SysModel model) {
        this.model = model;
    }
    public List<ModelList> getSubList() {
        return subList;
    }
    public void setSubList(List<ModelList> subList) {
        this.subList = subList;
    }
    public void setFlag(int flag) {
        this.flag = flag;
    }
    public int getFlag() {
        return flag;
    }
    /**
     * 递归方法根据传入的模块集合形成层级菜单
     */
    @SuppressWarnings("unchecked")
    public ModelList createTree2(List<SysModel> ms) {
        //
        ModelList node = new ModelList();
        ArrayList<SysModel> fu = new ArrayList<SysModel>();// 用来存储parentId为空的父节点;
        ArrayList<SysModel> childs = new ArrayList<SysModel>();// 用来存储不是系统的模块
        // 将系统和模块菜单分开
        for (Iterator<SysModel> it = ms.iterator(); it.hasNext();) {
            SysModel mode = (SysModel) it.next();
            String parentId = mode.getParentId();
            if (parentId == null || parentId.equals("")) {
                fu.add(mode);
            } else {
                childs.add(mode);
            }
        }
        //由于是多个子系统,首先要找出有多少个子系统
        for (SysModel model : fu) {
            ModelList node1 = new ModelList();
            node1.setFlag(0);
            node1.setModel(model);
            node.subList.add(node1);
            appendChild(node1, childs);
        }
        return node;
    }
    /**
     * node节点 childs为所以系统下的子节点
     */
    public void appendChild(ModelList node, List<SysModel> childs) {
        if (node != null) {
            String systemId = node.getModel().getSystemId();
            String smid = node.getModel().getSysModuleId();
            int flag = node.getFlag();
            if (childs != null && childs.size() > 0) {
                for (SysModel model : childs) {
                    String systemId2 = model.getSystemId();
                    String parentId2 = model.getParentId();
                    if (systemId.equals(systemId2)) {
                        if (parentId2.equals(smid)) {
                            ModelList child = new ModelList();
                            child.setModel(model);
                            child.setFlag(flag + 1);
                            node.getSubList().add(child);
                            appendChild(child, childs);
                        }
                    }
                }
            }
        }
    }
}
 

时间: 2024-10-21 15:33:11

java递归菜单树转换成pojo对象_java的相关文章

java实现将数字转换成人民币大写_java

Rmb.java public class Rmb { /** *人民币的基本信息和操作 *@author weinee *@version 1.0 */ double number; //人民币的数量 private String[] hanArr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "

java-Java 未知格式日期字符串如何转换成日期对象

问题描述 Java 未知格式日期字符串如何转换成日期对象 5C 如题,一种未知的日期格式的字符串如何转换为日期对象如值可能是 2015-02-06T03:57:23+00:002014-10-20 03:24:32.0638th Apr 2015 02:276/13/2015 5:47 PM 等等常规的世界日期格式,如何转成日期对象 解决方案 只能把可能的格式都列上,然后一个一个匹配,匹配上的就转换,没有匹配上的不转换. 解决方案二: 只能用正则表达式依次匹配,然后再调用对应的格式解析. 解决方

将JSON字符串转换成Map对象的方法_javascript技巧

页面向后台action传递一个json字符串,需要将json字符串转换成Map对象 public Map<String, String> toMap(Object object) { Map<String, String> data = new HashMap<String, String>(); // 将json字符串转换成jsonObject JSONObject jsonObject = JSONObject.fromObject(object); Iterato

寻找个 用java poi 将xls转换成xlsx原有xls样式丢失问题的解决办法

问题描述 寻找个 用java poi 将xls转换成xlsx原有xls样式丢失问题的解决办法 最近在用java poi将原有财务部门的xls文件批量转换成xlsx格式,但是很不幸,xls原有的样式(比如:字体大小,字体颜色,背景)全部丢失了. 试着将原有xls里的style读出来设置给新的xlsx,但是遇到错误. Code: xlsxCell.setCellStyle(xlsCell.getCellStyle()); Error: java.lang.ClassCastException: or

hibernate jackson-带有对象属性的bean,如何转换成json对象或者字符串

问题描述 带有对象属性的bean,如何转换成json对象或者字符串 Accounts类 { ....属性 private Users user: //这个是一个User类.对应到数据库上是userid } 现在.我在action层.需要把得到的Accounts实例,转换成json格式. 出现问题:Accounts实例可以成功转换成json格式字符串.但是其中User的相关信息并没有得到.而且调试发现Accounts实例中是有User属性值的[我已经取消了懒加载].问题就出现了转换到json这块了

Java利用反射自动封装成实体对象的方法_java

本文实例讲述了Java利用反射自动封装成实体对象的方法.分享给大家供大家参考.具体分析如下: 利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属性名称,比如页面传递name+rowNo,那么实体对象的属性名应该为name.代码如下 复制代码 代码如下: //获取页面数据,自动封装成bean对象 public List getObjectList(Class clazz,String[] rowNos) throws Exception{         List objList

json对象与数组以及转换成js对象的简单实现方法_javascript技巧

JSON 语法规则 JSON 语法是 JavaScript 对象表示法语法的子集. •数据在名称/值对中 •数据由逗号分隔 •花括号保存对象 •方括号保存数组 JSON 对象 JSON 对象在花括号中书写: 对象可以包含多个名称/值对: { "firstName":"John" , "lastName":"Doe" } 这一点也容易理解,与这条 JavaScript 语句等价: firstName = "John&q

使用JSON.parse将json字符串转换成json对象的时候会出错_javascript技巧

在对数据库取出来的数据(特别是描述信息)里面含有特殊字符的话,使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问题,所以要在输出到页面进行json对象转换之前将一些特殊符合进行编码或转义,下面展示的是C#代码编码和转义几个常用特殊字符.经过笔者测试,将这些符号编码和转义之后,大部分json字符串都可以转换成json对象了.如果遇到个别问题,应朝着这个方向去查找问题. theString = theString

把json格式的字符串转换成javascript对象或数组的方法总结_javascript技巧

第一种 JSON.parse(jsonString) 第二种 eval("("+jsonString+")") 第三种 var obj=(function ToJSON(o){ if(typeof(o)=="string")try{return new Function("return "+o)();}catch(e){return null;} })("[{name:'zhangsan',age:'24'},{na