我收到415 HTTP不支持的媒体类型错误,包含以下代码:
Spring MVC Controller:
@RequestMapping(value="/addItem", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> addItem(@RequestBody final ToDoItem item) {
toDoItemDao.create(item);
return new ResponseEntity<String>(HttpStatus.OK);
}
JavaScript AJAX请求:
$.ajax({
url: ToDoDemo.serverRoot + "/addItem",
type:'POST',
contentType: 'application/json',
dataType:"json",
data: JSON.stringify(oItem),
success: function() {
...
},
error: function(jqXHR, strStatus, strErrorThrown) {
...
}
});
的pom.xml:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.7</version>
</dependency>
在StackOverflow上有很多类似的问题我尝试使用它们的解决方案,但没有一个对我有效。 我错过了什么?
答案 0 :(得分:2)
查看这个答案,了解对弹簧MVC控制器的ajax JSON POST调用的demo工作,返回JSON响应(使用Spring 3.2.1.RELEASE
)。
使用chrome调试工具或Firebub,确保HTTP请求包含:
Content-Type: application/json
类路径上需要这两个jackson jar,请参阅演示pom.xml:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
确保@Controller
为scanned correctly,它应该说明是否已在日志中初始化。
答案 1 :(得分:0)
我必须添加
<mvc:annotation-driven/>`
到我的Spring Context。现在一切正常。