2011-06-20 30 views
2

我正在使用<mvc:annotation-driven /> Spring(3.0)配置(沒有ContentNegotiatingViewResolver)。根據documentation Spring 3支持JSON和XML。在下面的處理程序方法上使用@ResponseBody會給出JSON響應。如何控制獲取XML或JSON的響應?Spring 3:@ResponseBody - 如何控制獲取XML或JSON的響應?

@RequestMapping("/data") 
public @ResponseBody User getUser() { 
    return new User(); 
} 

EDIT

二手Maven依賴:

<!-- xml --> 
<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-impl</artifactId> 
    <version>2.1.8</version> 
</dependency> 

<!-- json --> 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-asl</artifactId> 
    <version>1.8.1</version> 
</dependency> 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.8.1</version> 
</dependency> 

調試AnnotationDrivenBeanDefinitionParser => jaxb2Present =真,jacksonPresent =真

+1

配置您必須指定在請求 –

+0

如何做到這一點? – marioosh

+0

看看來自Spring SVN的mvc-ajax示例https://src.springframework.org/svn/spring-samples/mvc-ajax/trunk/ – Random

回答

4

Spring使用 「接受」 的請求的標頭決定是發送JSON還是XML。如果兩者都被接受,那麼你會得到一個或另一個,我不記得先被檢查。

爲了得到一個XML,你的客戶端需要在頭文件中有「application/xml」,而不是「application/json」。

+1

我有同樣的問題,但Accept頭不工作... –

0

使用@ResponseBody這樣。下面的方法將JSON作爲請求參數並返回JSON響應。

@RequestMapping(value = "...", method = RequestMethod.POST) 
@ResponseBody 
public Object RestPOSTService(@RequestBody JsonContent content, 
     HttpServletRequest request) throws Exception { 
     ..... 
    return (JSON); 
} 
0

它在RequestMapping

@RequestMapping(
value = "...", 
method = {RequestMethod.POST},produces ="application/json") 
public @ResponseBody Object getObject() { ... } 
相關問題