2011-11-08 8 views
3

通常、私のControllersメソッドからJSONを返すために、@ResponseBody注釈を追加し、返されたオブジェクトをJSONとしてマップするようにしました。ここでは問題ありません。 this questionでしかしvoidを返すコントローラメソッドがJSONを生成できますか?

、OPは「@RequestMappingリターンのボイドを使用し、私の他の方法を、と私はまだ、AJAXを介してそれらからJSONを取得することができます」と言う

私はそれがどのように可能かと思いましたか?私は疑いの余地がない、彼は確かにそれをやっているので、私は好奇心と私の春の理解を高めるために、それを行う方法を知りたいです。

答えて

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

右、私はそれについて考えているはずです、ありがとうございました。しかし、劣った選択肢と思われる。 - この場合、[the Manual](http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html)*の「@ ResponseBody」は必要ありません。 "メソッドが@ResponseBodyで注釈されている場合、戻り値の型は応答HTTP本体に書き込まれます。戻り値は、HttpMessageConvertersを使用して宣言されたメソッドの引数型に変換されます" * – stivlo

+0

ええ、個人的には、このようにしたいと思っています...私は決して生産していません!私はそれが可能であることを知っています。 – Danalog

+0

と私の好奇心に答える、ありがとう。 – stivlo

関連する問題