2011-12-01 42 views
6

我使用Spring 3.0創建了一個RESTful網站。我正在使用ContentNegotiatingViewResolver以及HTTP消息轉換器(例如,針對JSON的MappingJacksonHttpMessageConverter,針對XML的MarshallingHttpMessageConverter等)。如果我在URL的最後一個URL中使用.xml後綴,並且在URL中使用帶有.json後綴的JSON,我能夠成功獲取XML內容。Spring REST控制器中帶有RequestBody的XML/JSON POST

從控制器獲取XML/JSON內容對我來說不會產生任何問題。但是,如何在同一個Controller方法中將請求主體的XML/JSON POST?

例如,

@RequestMapping(method=RequestMethod.POST, value="/addEmployee") 
    public ModelAndView addEmployee(@RequestBody Employee e) { 
     employeeDao.add(e); 
     return new ModelAndView(XML_VIEW_NAME, "object", e); 
} 

回答

11

您應該考慮不使用視圖來返回JSON(或XML),而是使用@ResponseBody註釋。如果員工應該怎樣退還,春和MappingJacksonHttpMessageConverter會,如果你使用的方法定義和執行這樣的(注意,不是測試)自動翻譯你的Employee對象到JSON:

@RequestMapping(method=RequestMethod.POST, value="/addEmployee") 
    @ResponseBody 
    public Employee addEmployee(@RequestBody Employee e) { 
    Employee created = employeeDao.add(e); 
    return created; 
    } 
+0

感謝reply.I」我會盡快回復你:) –

+0

Stoffer,我已經試過了,你已經回答了。但是當我試圖在請求體內將任何 XML/JSON內容張貼到控制器方法。我是從那裏得到異常 即 ** HTTP狀態400 - 內容類型「文本/純;字符集= UTF-8」不支持** 是因爲我使用既ContentNegotiatingViewResolver和 HTTP消息轉換器??或者有其他原因。 –

+4

Spring中的轉換器註冊了某些內容類型(用於請求主體)並接受(用於響應)。對於json,它是'application/json'和其他一些。對於XML,它是'application/xml'和其他一些。確保你的客戶端發送'content-type:application/json'和'accept:application/json'並且它會工作。 –

相關問題