笔记:前台使用vue的ajax传递json数组数据到后台(后台的解析办法使用@RequestBody)
1.前言由于本人在使用vue.js访问后台的时候,传递json数组数据到后台,意外的出现了不能解析的错误,使用BeanUtils不能设置集合的问题的解决办法!因此记录下来!2.想要解析vue的ajax的post请求的方法需要在请求的方法参数上添加@RequestBody Map<String, String> paramsMap<String, String>...
1.前言
由于本人在使用vue.js访问后台的时候
,传递json数组数据到后台
,意外的出现了不能解析的错误,使用BeanUtils不能设置集合的问题的解决办法!
因此记录下来!
当前使用的解析JSON的工具为:fastjson 1.2.58 版本
2.想要解析vue的ajax的post请求的方法
需要在请求的方法参数上添加@RequestBody Map<String, String> params
@RequestMapping("/addInstrument")
public String addInstrument(@RequestBody Map<String, String> params) {
Map<String, String> trimParams = SpaceTrimUtils.trimParamsValue(params);
try {
// 这个EasyBeanUtils是一个BeanUtils的封装包
Instrument instrument = EasyBeanUtils.setObjectValues(Instrument.class, trimParams);
// 借助hibernate校验javabean获取错误信息
String msg = ValidateUtils.validateAndGetMessage(instrument);
if (!StringUtils.isEmpty(msg)) {
return JsonResultUtils.getJsonFail(msg);
}
String name = instrument.getName();
if(StringUtils.isEmpty(name)){
return JsonResultUtils.getJsonFail("当前的器械包名称不能为空!");
}
/*判断当前的器械名称是否重复*/
int nameCount = new QInstrument().name.eq(name).findCount();
if (nameCount > 0) {
return JsonResultUtils.getJsonFail("当前添加的器械名称已重复!");
}
instrument.setCreatedate(new Date());
Ebean.save(instrument);
return JsonResultUtils.getJsonSuccess();
} catch (Exception e) {
e.printStackTrace();
return JsonResultUtils.getJsonFail("添加器械失败!");
}
}
这里使用曲线补救的方式,直接从参数中获取数据然后将其转换称对应的对象
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
这个的使用,可能会出现错误的级联操作
以上纯属个人见解,如有问题请联系本人!
更多推荐
所有评论(0)