1.前言
由于本人在使用vue.js访问后台的时候
,传递json数组数据到后台
,意外的出现了不能解析的错误,使用BeanUtils不能设置集合的问题的解决办法!
因此记录下来!
2.想要解析vue的ajax的post请求的方法
需要在请求的方法参数上添加@RequestBody Map<String, String> params
Map<String, String> trimParams = SpaceTrimUtils.trimParamsValue(params);
String inspackageDetailsStr = trimParams.get("inspackageDetails");
if (StringUtils.isEmpty(inspackageDetailsStr)) {
return JsonResultUtils.getJsonFail("必须添加器械组件的信息!");
}
trimParams.remove("inspackageDetails");
/*转换当前json字符为指定的对象类型*/
List<InspackageDetail> inspackageDetails = JSON.parseArray(inspackageDetailsStr, InspackageDetail.class);
这里使用曲线补救的方式,直接从参数中获取数据然后将其转换称对应的对象
3.前台的vue的请求为:
注意这里的thatCompoments为一个对象数组,传递参数的时候需要使用:JSON.stringify()方法将这个对象数组变为json数据发送到后台
var thatCompoments=JSON.stringify(thatCompoments);
var compment=thatCompoments;
axios
.post(this.httpUrl + "/updateInspackage", {
"inspackageDetails":compment
})
前台传递的数据为:
后台的解析结果为:
解析成功!
4.总结
1.在使用vue.js传递数组参数的时候必须使用JSON.stringify()将数组数据转换为json
,发送到后台,后台处理的时候不能使用BeanUtils直接将数据放入对象中会出现错误的
2.后台在解析参数的时候需要使用fastjson将指定的字符转换为对象数组
,最后进行处理
3.在处理Hibernate级联操作的时候需要小心cascade = CascadeType.MERGE
这个的使用,可能会出现错误的级联操作
以上纯属个人见解,如有问题请联系本人!