私はajax呼び出しを処理し、JSONを返すコントローラメソッドを持っています。私はjson.orgのJSONライブラリを使用してJSONを作成しています。Spring MVC 3.1コントローラのハンドラメソッドで応答出力ストリームに直接ストリーム
私は、次の操作を行うことができます:
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String getJson()
{
JSONObject rootJson = new JSONObject();
// Populate JSON
return rootJson.toString();
}
しかし、唯一の春には、応答の出力ストリームに書き込み持つように、JSON文字列を一緒に置くことは非効率的です。
代わりに、私はこのような応答出力ストリームに直接書き込むことができます。
@RequestMapping(method = RequestMethod.POST)
public void getJson(HttpServletResponse response)
{
JSONObject rootJson = new JSONObject();
// Populate JSON
rootJson.write(response.getWriter());
}
しかしハンドラにHttpServletResponse
を渡すに頼らよりも、これを行うには良い方法があるだろうように思えます方法。
@ResponseBody
アノテーションとともに使用できるハンドラメソッドから返される別のクラスまたはインタフェースがありますか?
InputStreamResource/ResourceHttpMessageConverterを使用することですか? – arahant
@arahant - これは公正な質問です。私はそれが可能ではあるが、正しいことをする方法ではないという印象を受けていると思う。 @Ralphの[この質問](http://stackoverflow.com/questions/5673260/downloading-a-file-from-spring-controllers)には、テストを難しくしているという回答があります。これを行うハンドラメソッドをたくさん書く前に、別の方法があるかどうかを知りたいと思っていました。これまでのところ、カスタムの 'HttpMessageConverter'を書く必要があるようです。 –