后端采用@requestbody String可以正常接收,但@requestbody List<实体类>出现错误,前端抓包出现 http 415错误,
<script>
//发送ajax请求
var userList = new Array();
userList.push({username:"zhangsan","age":18});
userList.push({username:"lisi",age:28});
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/user/quick5",
data:JSON.stringify(userList),
contentType:"application/json;charset=utf-8"
});
</script>
@RequestMapping(value="/quick5")
@ResponseBody
public void save5(@RequestBody List<User> list) throws IOException {
System.out.println(list.toString());
return;
}
public class User {
@JsonProperty(value="username" )
private String username;
@JsonProperty(value="age" )
private int age;
public User(){}
public User(String username,int age){
this.username = username;
this.age = age;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", age=" + age +
'}';
}
}
已测试点:加了Jackson依赖包;spring-mvc加了 mvc:default-servlet-handler/;前端请求的数据是json类型
你看一下你后台有没有支持 POST请求。
@RequestMapping(value = "这里是你的url",method = RequestMethod.POST)
你以为你传递的是json,,实际上不是,需要你指定contentType,接口才会用json处理
data:JSON.stringify(userList)
改为
data:userList
个人感觉是后端@requestbody的映射问题,前端发送了负载数据
前端请求改为下面的呢?
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/user/quick5",
data:JSON.stringify(userList),
dataType:"json",
contentType:"application/json",
success:function(data){
},
error:function(){
console.log("发生未知错误!!!");
}
});
userList.push({"username":"zhangsan","age":18});
userList.push({username:"lisi",age:28});
这两个格式都不一样,转json字符串不报错?
1、你前端往后端传递的是集合吗?不是请规范后端接收参数。
2、可以尝试这去除@RequestBody 看看。
3、可以使用PostMan进行测试,分析师前端问题还是后端问题。
4、https://blog.csdn.net/weixin_45213302/article/details/106911952
把你前端传的age值给我打上双引号