您的位置:首页 > 编程语言 > Java开发

关于Springboot中前端向controller传递List参数报错的问题

2018-12-11 17:22 495 查看

关于Springboot中前端向controller传递List参数报错的问题

为实现批量修改,controller中传入一个List集合,controller中代码如下:

@RequestMapping("updateAllGoods")
public  boolean updateAllGoods( List<Goods> goodsList){
int res = goodsService.updateAllGoods(goodsList);
if (res>0){
System.out.println(res);
return true;
}else {
return false;
}
}

前端的ajax代码如下:

$("#but1").click(function () {
var goodsList = new Array();
goodsList.push({goods_name: "铝锭",goods_pay :2000});
goodsList.push({goods_name: "铝锰合金",goods_pay :1000});
var list = JSON.stringify(goodsList);
$.ajax({
type:'post',
url:'goods/updateAllGoods',
data:list,
success:function (res) {
if (res ==true){
$("#info").html("录入成功").css("color","green");
}
if (res ==false){
$("#info").html("录入失败").css("color","red");
}
}
})
})

运行后出现以下错误:

查了很久以后,了解到list前需要添加注解@RequestBody。注解添加完运行后却又报错。错误如下:

后来又在网上搜了很久很久很久,这是因为默认的类型是application/x-www-form-urlencoded;charset=UTF-8’,所以不要忘记在ajax中添加这样的代码:

$("#but1").click(function () {
var goodsList = new Array();
goodsList.push({goods_name: "铝锭",goods_pay :2000});
goodsList.push({goods_name: "铝锰合金",goods_pay :1000});
var list = JSON.stringify(goodsList);
$.ajax({
type:'post',
url:'goods/updateAllGoods',
contentType : 'application/json',   //将contentType的类型改为这个就可以使用注解@RequestBody了
data:list,
success:function (res) {
if (res ==true){
$("#info").html("录入成功").css("color","green");
}
if (res ==false){
$("#info")
20000
.html("录入失败").css("color","red");
}
}
})
})

最后总结一下,需要注意的地方就是注解list前加上注解@RequestBody,ajax中的contentType 设置成’application/json’。

第一次写博客,记录一下错误,也希望帮助对别人有用!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: