要从后台拿到指标最大数值的,思路是:
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;
}