笔记:前台使用vue的ajax传递json数组数据到后台(后台的解析办法使用@RequestBody)

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这个的使用,可能会出现错误的级联操作

以上纯属个人见解,如有问题请联系本人!

发布了215 篇原创文章 · 获赞 39 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45492007/article/details/103211608