SpringMVC控制器接收JSON字符串时,报错HTTP-415
试了好长时间没有查出问题在哪
这是我的前端代码
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="/html/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
function test() {
var saveDataAry = [];
var data1 = {"name" : "name1"};
var data2 = {"name" : "name2"};
saveDataAry.push(data1);
saveDataAry.push(data2);
$.ajax({
type : "POST",
url : "/jsonTest",
dataType : "json",
contentType : 'application/json',
data : JSON.stringify(saveDataAry),
success : function(data) {
alert(data);
},
error : function(data) {
alert("error");
}
});
}
</script>
</head>
<body>
<input type="button" onclick="test()" value="JSON">
</body>
</html>
这是我的后端代码
@Controller
public class JsonTest {
@RequestMapping(value = "jsonTest", method = RequestMethod.POST)
@ResponseBody
public String jsonTest(@RequestBody List<Student> s) {
return "success";
}
}
class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
浏览器提示我
POST http://localhost:8080/jsonTest 415 (Unsupported Media Type)
后台没有提示,打了个断点也没有进去
maven只依赖了spring-webmvc4.2.5和servlet-api3.1,SpringMVC本身是搭建成功的。
dispatcherservlet.xml里面是配置了<mvc:annotation-driven />
排查了有一段时间了:(
任何回复都能让我不胜感激
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我运行了你的代码,没有问题,我猜你应该没有加入 Jackson 的依赖和相关配置:
消息转换器的配置:
HttpMessageConverter没配吧。
可以加个jackson的依赖,然后MappingJacksonHttpMessageConverter塞到HttpMessageConverter位置上。
data : JSON.stringify(saveDataAry),这样的话传过去的是一个字符串是无法转换为 List 的,你可以修改 Controller 的参数为字符串或者将 data 改成{参数名:数组}
将 public String jsonTest(@RequestBody List<Student> s) { 中的 @requestBody 删除