2017.5小结

来源:互联网 发布:h5dm新域名 编辑:程序博客网 时间:2024/06/06 13:17

要从后台拿到指标最大数值的,思路是:
1.后台写个新方法getMaxTargetValue(),接收限制条件时间,区域,指标
2.前台创造一个getMaxForChart方法,通过ajax调用getMaxTargetValue()方法,要有个返回值
细节:1. request.getParameterValues用来获取前台数组,参数是string类型,
2.Double.valueOf(ftargetvalue).intValue(); string转double再转int
3、 Collections.max(targetvalueList); jdk里封装的方法,可以直接获取list中最大值
4、调试中,给js打debugger,可以跳到方法里,但不打debugger,就不进方法。尝试了js的立即执行函数,(function(){}{} ),匿名函数,都不好使,后来发现是ajax是异步执行的,改为同步执行,问题解决
断点会执行的原理是,断点会阻隔线程继续执行。日了狗

public void getMaxTargetValue() {        HttpServletRequest request = ServletActionContext.getRequest();        String regionCodes = getStringFromArray(request.getParameterValues("regionCodeStr"));        String timeArrayStr = getStringFromArray(request.getParameterValues("timeStr"));        String targetArrayStr = getStringFromArray(request.getParameterValues("targetNameStr"));        List<TbtkyTablevalue> dataTableList = statisticsdataService                .getDataTableValueList(regionCodes, timeArrayStr,                        targetArrayStr);        // List<Object> targetvalueList = null; 用这个报空指针错        // 拿到指标值中的最大值        List<Integer> targetvalueList = new ArrayList<Integer>();        for (TbtkyTablevalue tableValue : dataTableList) {            String ftargetvalue = tableValue.getFtargetvalue();            int allValue = Double.valueOf(ftargetvalue).intValue();             try {                targetvalueList.add(allValue);            } catch (Exception e) {                e.printStackTrace();            }        }        int maxTarget = (Integer) Collections.max(targetvalueList);//      this.sendJSONWeb("{success:true,'maxTarget':" + maxTarget + "}");        this.sendJSONWeb("{\"success\": \"true\", \"maxTarget\":"+maxTarget+"}");  //需要这样返回,否则跳error    }
//拿到指标所有数据中的最大值    getMaxForChart : function getMaxForChart(params){        var maxTarget;         var targetName = params.targetName;        var targetNameStr = targetName.join(","); //数组转字符串        var regionCode = params.regionCode;        var regionCodeStr        //如果区域为空或1,那么join方法报错。通过判断 如果regionCode是string类型,就不用转string,否则转        if(typeof regionCode == "string"){            regionCodeStr = regionCode        }else{            regionCodeStr = regionCode.join(",");        }        var time = params.time;        var timeStr;        if(time==""){            timeStr="";        }else{            timeStr = time.join(",");        }        $.ajax({            url: getRootPath()+'/statisticsData/getMaxTargetValueStatisticsDataAction.action',              data : {                targetNameStr,                regionCodeStr,                timeStr            }, // 要传递的参数            type : 'post',// 数据发送方式            async : false, //同步执行             dataType : 'json',            success : function(data) {                maxTarget = data.maxTarget;            }        });        return maxTarget;    }
0 0
原创粉丝点击