当前位置: 代码迷 >> Java Web开发 >> 关于一个双重for循环判断的有关问题,大家帮忙看看
  详细解决方案

关于一个双重for循环判断的有关问题,大家帮忙看看

热度:4097   发布时间:2013-02-25 21:22:50.0
关于一个双重for循环判断的问题,大家帮忙看看
Action中:
Java code
/**     * *异步方法*     * 此方法用于异步加载所有功能列表     * @return     * @throws SQLException     */    @RequestMapping(value="/fulist")    @ResponseBody      public String OperatorFuList(HttpSession session) throws SQLException{        //获取操作人        OperDto operDto = (OperDto) session.getAttribute("operDto");        if(null == operDto){            return "ACTION_ERROR";        }        JSONArray object =null;        try {            //获取所有功能列表            List<FunResource> funList = operatorManService.getAllFuncs(operDto);            object = JSONArray.fromObject(funList);        } catch (RuntimeException e) {            e.printStackTrace();            return ACTION_ERROR;        }        return object.toString();    }/**     * *异步方法*     * 根据角色ID查询所拥有的功能列表     * @return     * @throws SQLException     */    @RequestMapping(value="/rolefunlist")    @ResponseBody      public String OperatorRoleFunList(HttpSession session) throws SQLException{        //获取操作人        OperDto operDto = (OperDto) session.getAttribute("operDto");        if(null == operDto){            return "ACTION_ERROR";        }        JSONArray object =null;        try {            //根据角色ID查询所拥有的功能列表            List<FunResource> funList = operatorManService.getFuncsByRoleid("0000000005");            object = JSONArray.fromObject(funList);        } catch (RuntimeException e) {            e.printStackTrace();            return ACTION_ERROR;        }        return object.toString();    }

JSP页面:
JScript code
function loadFuncs(){    $('#fun_div')("");    $.getJSON("${AP_ROOT}/operator/fulist", function(data){        $.each(data, function(i,item){            $.getJSON("${AP_ROOT}/operator/rolefunlist", function(data1){                $.each(data1, function(j,item1){                    if(item1.funcid==item.funcid){                        $('#fun_div').append("<div class='mi_div'><input name='funcid' type='checkbox' class='fun_check' value='"+item.funcid+"' checked='true'/><label class='fun_lable'>"+item.funcname+"</label></div>")                    }else{                        $('#fun_div').append("<div class='mi_div'><input name='funcid' type='checkbox' class='fun_check' value='"+item.funcid+"'/><label class='fun_lable'>"+item.funcname+"</label></div>")                    }                    if((i+1)%4==0){                        $('#fun_div').append("<br/>")                    }                });            });           });    });}



Action中查询到两个List,转换成JSON格式,供JS中异步加载.
先说说两个List的关系:
两个List中存放的都是FunResource对象
第一个List中存放的是所有的FunResource对象
第二个List中只存放了一部分FunResource对象
PS:第二个List中的FunResource对象都能在第一个List中找到!

现在我需要做的是遍历第一个List,在页面上生成很多个checkbox,(也就是说List中的一个对象就是页面上的一个checkbox)
然后通过判断第二个List中的FunResource对象是否跟第一个List中的相同
如果相同则让对应的checkbox默认为选中状态!

这个逻辑改怎么写,我真是绕糊涂了,所以来求大家帮忙想想 - -

------解决方案--------------------------------------------------------
我感觉你这样写有点复杂,你应该把下面的逻辑最好放在action中完成。
"
现在我需要做的是遍历第一个List,在页面上生成很多个checkbox,(也就是说List中的一个对象就是页面上的一个checkbox)
然后通过判断第二个List中的FunResource对象是否跟第一个List中的相同
如果相同则让对应的checkbox默认为选中状态!
"
你要是就这样重复的异步请求应该有多慢啊。
你最好直接返回的类型是 List<Map<FunResource,Boolean>>;用前边的表示资源,后边的表示checked.

  相关解决方案