前言:
前几天用ajax发 { "ids": idList,"op":opStr } ,到Controller时,Form类老是绑定数据出错。
Form类结构如下
class Form{
private Integer[] ids;
private String op;
//get、set
}
js参数idList的申明:
var ids = new Array;
// get id,some transform op
// each {
ids.push(id);
}
老是绑定不上,后来看request url发现url是这样的http://xxxx/controllerName/methodName?ids[]=val1&id[]=val2&op=opStr
居然没有index的,怪不得出错,
var ids = {};
//获取值,省略
//给ids 赋值
$(val).each(function(i,e){
ids[i]=e;
})
这样初始化url就会是酱紫的 http://xxxx/controllerName/methodName?ids[index]=val1&id[index]val2&op=opStr
嗯,还没有完结……
发现这样的话,map的Bind不就解决了么。
这个普通类型的map,肯定可以的
var map = {};
map[key] = value;
map[key1] = value2;
如果map<String,Object>呢?再按上面那样来肯定是行不通的,
我的思路是这样的:这个方案还不太好,因为还要对后台进行转换,周末研究一下springmvc的bind,有更好的方案,会贴出,更新
class xxForm{
private String key;
private Object obj;
//get set
}
class xxFormWrapper{
private List<xxForm> xxforms;
//get set
}
@RequestMapping(~~~)
public void xxxMethod(xxFormWrapper xxform){
}
这里前端传数据的话,最好用json,或者用AjaxForm来传input 的name设为xxforms[i].key=keyVal,、xxforms[i].obj.name=nameStr、xxform[i].obj.veryHandSome = true