2014-01-22 64 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

他們正在使用一個老版本的傑克遜也支持。 –

相關問題