2014-01-22 35 views
0

我收到下面的代码415 HTTP不支持的媒体类型错误:Spring MVC的POST Unsupporeted媒体类型

Spring MVC的控制器:

@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

如果你指定'datatype:“json”',你不需要你的'headers'。 –

+0

您使用的是什么Spring版本? –

+0

@SotiriosDelimanolis我正在使用3.2.0.RELEASE –

回答

0

我不得不添加

<mvc:annotation-driven/>` 

我的Spring上下文。现在一切正常。

2

看看这个答案,为工作demo的ajax JSON POST调用到Spring MVC控制器,返回一个JSON响应(使用Spring 3.2.1.RELEASE)。

随着铬调试工具或Firebub,确保在HTTP请求中包含:

Content-Type: application/json 

这两个杰克逊罐子都需要在类路径中,看到演示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> 

制作确定@Controllerscanned correctly,应该说它是否在日志中初始化。

+1

他们正在使用一个老版本的杰克逊也支持。 –

相关问题