日期:2014-05-17  浏览次数:20923 次

关于一个双重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').html("");
    $.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默认为选中状态!
"
你要是就这样重复的异步请求应该有多慢啊。
你最好