2011-11-08 57 views
3

通常要從我的控制器方法返回JSON,我添加一個@ResponseBody註釋,並讓傑克遜將我返回的對象映射爲JSON。這裏沒問題。返回void的Controller方法是否會產生JSON?

但是在this question的OP說「那些使用@RequestMapping返回空隙我的其他方法,我仍然可以從他們通過Ajax獲得JSON」

我想知道如何可能嗎?我沒有理由懷疑,他確實正在那樣做,所以我想知道如何做到這一點,爲了好奇和加強我對Spring的理解。

回答

4

您可以直接寫信給HttpServletResponse的:

@ResponseBody 
public void doSomething(HttpServletRequest request, HttpServletResponse response) { 
    response.setContentType("application/json"); 
    String json = "{\"Hello\": \"World\"}"; 
    PrintWriter out = response.getWriter(); 
    out.write(json); 
} 
+1

正確的,我應該想到這個問題,謝謝。但似乎是一個次要的選擇。 - 在這種情況下,您不需要來自[手冊](http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html)的'@ ResponseBody' * 「如果方法用@ResponseBody註解,則返回類型被寫入響應HTTP主體。返回值將被轉換爲使用HttpMessageConverters的聲明方法參數類型」* – stivlo

+0

是的,我個人不知道爲什麼想要這樣做...我從來沒有生產過!我只知道這是可能的。 – Danalog

+0

它回答我的好奇心,謝謝。 – stivlo