springboot接收实体类集合类型参数, 前端使用vue发送数据
今天在写代码的时候遇到一个问题, 就是前端需要发送一个集合list数据到后台, list的类型是一个实体类, 后台使用的是springboot, 但是如何接收这个参数, 确实让我费了点功夫.查了很多资料, 大多是说需要使用@RequestParam注解, 然后加上value = "list[]" 类似这样的public ResultJSON methodName(@RequestParam(r..
·
今天在写代码的时候遇到一个问题, 就是前端需要发送一个集合list数据到后台, list的类型是一个实体类, 后台使用的是springboot, 但是如何接收这个参数, 确实让我费了点功夫.
查了很多资料, 大多是说需要使用@RequestParam
注解, 然后加上value = "list[]"
类似这样的
public ResultJSON methodName(@RequestParam(required = false, value = "list[]") List<String> list){}
但是我试了一下不好使, 这里他的list类型为String, 不是实体类类型, 所以这个解决方案对于我这种情况不适用
后来查到一个解决方案说是使用@RequestBody注解, 同时需要在前端进行相应的操作, 前端的请求头需要设置为
Content-Type=application/json, 我这是在vue框架中进行编码的, 所以我在main.js中设置这个请求头
// 这里的post设置是原有的, 这里不对post进行修改, 新增一个put请求头的设置, 在实际使用中, 使用put处理该类型的请求
Axios.defaults.headers.post['Content-Type'] = "application/x-www-form-urlencoded";
Axios.defaults.headers.put['Content-Type'] = "application/json";
这里我设置的请求时针对put请求设置, 因为post请求在其他很多请求中都在使用, 如果修改post请求的请求头, 会导致其他所有的请求都会出错, 得不偿失.
然后在js中正常的发送axios请求即可
// 数组数据
var jsonList =[
{
paramCode:abc,
paramValue:abcValue
},
{
paramCode:abc1,
paramValue:abcValue1
},
{
paramCode:abc2,
paramValue:abcValue2
},
]
// jsonList 就是前端普通的实体类集合数据
axios.put("/system/updateParams", jsonList)
.then(response => {
const data = response.data;
if (data.code != "200") {
this.$Message.error(data.msg);
return;
}
this.$Message.success("保存成功");
this.getParamList();
})
.catch(err => {
console.log("保存参数异常");
console.log(err);
});
可以看到在后台中已经接收到list中了, list中有三个实体类对象
至此 问题完美解决!
更多推荐
已为社区贡献6条内容
所有评论(0)