Vue+SpringBoot:前端向后台传送多参数
Vue+SpringBoot:前端向后台传送多参数传参(包括不同类型)前端包装,后台通过map进行参数的接收。参数包括普通数据类型及数组前端传参(vue)const { data: res } = await this.$http.post(’'xxx,{pipeId: this.table.pipeId,year1: this.table.year1,year2: this.table.year
Vue+SpringBoot:前端向后台传送多参数
传参(包括不同类型)
前端包装,后台通过map进行参数的接收。
参数包括普通数据类型及数组
前端传参(vue)
const { data: res } = await this.$http.post(''xxx,
{
pipeId: this.table.pipeId,
year1: this.table.year1,
year2: this.table.year2,
differenceValue: this.table.differenceValue,
nodes1: this.nodes1,
nodes2: this.nodes2
})
其中node1、node2为复选框勾选的数组,其他的为int或String型
后台JSONArray处理将其转化
后台接收
public ResultType function(@RequestBody Map<String,Object> datas){
int pipeId = (int) datas.get("pipeId");
int year1 = Integer.parseInt(datas.get("year1").toString());
int year2 = Integer.parseInt(datas.get("year2").toString());
double differenceValue= (double) datas.get("differenceValue");
// 先转化成json数组,再转换成对象List
JSONArray array1 = JSONArray.parseArray(JSON.toJSONString(datas.get("nodes1")));
List<PipeFeatureList> nodes1 = JSONObject.parseArray(array1.toString(), PipeFeatureList.class);
JSONArray array2 = JSONArray.parseArray(JSON.toJSONString(datas.get("nodes1")));
List<PipeFeatureList> nodes2 = JSONObject.parseArray(array2.toString(), PipeFeatureList.class);
return ResultType;
}
问题出现
仅通过@RequestParam或者@RequestBody接收数据,或者两者结合,暂时无法调通前后端的参数的传输,故采用map接收多参数,从map中获取的前端传输的json(未经过stringify处理),在后台打印的数据类型为
LinkedHashMap型。
接收的json数组为ArrayList型,由于接口参数需求,需要将nodes1,nodes2转化成List,转化方法为:
1.先将数据转化成json数组
JSONArray array = JSONArray.parseArray(JSON.toJSONString(datas.get(“nodes1”)));
2.将json数组转化成List
List nodes1 = JSONObject.parseArray(array.toString(), T.class);
若前端传数据将其stringify处理后,后台打印的数据将以?data1=value1&data2=value2的形式以String呈现。
更多推荐
所有评论(0)