一 在js中的提交方法
function addExtAttr(){
var obj=JSON.stringify([{'extAttrCode':'7','extAttrName':'基本属性','extSort':'7','extPageType':'10',
'extCheck':'10','extValueType':'0','extValueDefault':'','extStatusCd':'1000','extPage':'T1001',
'list': [{'extAttrValueCode': '0','extAttrValueName': 'name0'},
{'extAttrValueCode': '1','extAttrValueName': 'name1'}]},
{'extAttrCode':'8','extAttrName':'基本属性','extSort':'8','extPageType':'10',
'extCheck':'10','extValueType':'0','extValueDefault':'','extStatusCd':'1000','extPage':'T1001',
'list': [{'extAttrValueCode': '0','extAttrValueName': 'name0'},
{'extAttrValueCode': '1','extAttrValueName': 'name1'}]}
]);
$.ajax({
url : '${ctx}/extAttrManage!insertExtAttr.action' ,
type : 'post',
dataType : 'json',
data : {'param':obj},
success : function(data) {
alert(data.msg);
}
});
由于项目的需要,我的json数据传的比较复杂,大致可以简化成[{"AA":"BB"},{"CC":"DD"}]这样的一个json数组。传递的json对象一定要用
JSON.stringify()方法将其转换为字符串,不然后台接收到的值是null.
如果你的 dataType :是填的json,那么你回传的就是一个json对象,不需要再用JASON.parse()或者eval()将其转化为数组,个人建议不要用eval()函数。
二 action的中处理方法
/**
* 插入拓展属性
* @return
*/
public String insertExtAttr(){
log.info("extAttrManage!insertExtAttr 插入拓展属性");
try{
List<ExtAttr> listExtAttr=new ArrayList<ExtAttr>();
String param = StringUtils.trimToNull(getRequest().getParameter("param"));
if(param != null){
param = java.net.URLDecoder.decode(param, "UTF-8");
}
//将前台传过来的json数组存到ExtAttr对象中
listExtAttr=JSON.parseArray(param, ExtAttr.class);
extAttrService.insertExtAttr(listExtAttr);
}catch(Exception e){
log.error("extAttrManage!insertExtAttr error : 系统异常,插入拓展属性!!!\n", e);
log.bizLog("extAttrManage!insertExtAttr", "插入拓展属性失败", "插入", "插入异常", "失败", getAuth(), getOperUrl());
ActionUtils.write(this.getResponse(), "{\"msg\":\"插入拓展属性失败\"}");
return Constants.GLOBAL_ERROR_PAGE;
}
ActionUtils.write(this.getResponse(), "{\"msg\":\"插入拓展属性成功\"}");
return null;
}
这里说一下给前台传递json的写法,格式就是json的一般格式,但是必须是双引号。不然用JSON.parse()就解析不了。