我正在尝试将简单的JSON对象传递给Spring MVC控制器,并将错误称为“NetworkError:415 Unsupported Media Type - https://my_url.html”
我使用的是Spring 3.2.10,jquery 1.6和com.googlecode.json-simple 1.1.1库。关注我发布我的代码,
JSP
function myTestFunction(year){
$.ajax({
type: "POST",
url: "my_url.html",
data: "{\"testName\": \"MyName\"}",
contentType: "application/json",
mimeType: "application/json",
success: function(response){
console.log("SUCCESS: " + response);
},
error: function (e) {
console.log("Error " + e);
}
});
控制器类
@RequestMapping(value = "/my_url.html", method = RequestMethod.POST)
public void myTestMethod(@RequestBody MyInfo myInfo, HttpServletRequest request, HttpServletResponse response) throws Exception{
// my code
}
MyInfo类
public class MyInfo {
private String testName;
public MyInfo () {
}
public MyInfo (String testName) {
this.testName = testName;
}
public String getTestName() {
return testName;
}
public void setTestName(String testName) {
this.testName = testName;
}
}
我尝试了多个选项,添加dataType: 'json'
并使用JSON.stringify
发送对象但是对我不起作用。
而且我已经将“<mvc:annotation-driven />”
标记放在我的spring配置文件中。我错过了什么或做错了什么?
答案 0 :(得分:1)
您的请求和映射都没问题。
当转换器尝试将HTTP请求转换为JAVA对象时,可能会出现您提到的错误。您提到您使用的是 json-simple 库。 Spring MVC期望类路径上的 jackson 库,所以这很可能是你的问题。
尝试将jackson库添加到项目中。如果使用maven,对于spring 3.2,以下应该是一个正确的依赖,如果你使用不同的构建系统,只需从maven存储库下载,还要检查传递依赖(你会注意到它们列在maven文件中) jar档案)
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
答案 1 :(得分:0)
尝试使用JSON.stringify。 ajax调用看起来像
function myTestFunction(year){
$.ajax({
type: "POST",
url: "my_url.html",
data: JSON.stringify({"testName": "MyName"}),
contentType: "application/json",
mimeType: "application/json",
success: function(response){
console.log("SUCCESS: " + response);
},
error: function (e) {
console.log("Error " + e);
}
});