Ajax çağrılarını işleyen ve JSON'u döndüren bir denetleyici yöntemim var. JSON'u oluşturmak için json.org'dan JSON kütüphanesini kullanıyorum.Yay MVC 3.1 denetleyicisinin işleyici yönteminde yanıt çıkış akışına doğrudan aktar
aşağıdaki yapabileceğini:
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String getJson()
{
JSONObject rootJson = new JSONObject();
// Populate JSON
return rootJson.toString();
}
Ama araya JSON dizesi koymak verimsiz, sadece Bahar yanıtın çıktı akışına yazmak zorunda.
Bunun yerine, böyle tepki çıkış akımına doğrudan yazabilirsiniz:
@RequestMapping(method = RequestMethod.POST)
public void getJson(HttpServletResponse response)
{
JSONObject rootJson = new JSONObject();
// Populate JSON
rootJson.write(response.getWriter());
}
Ama işleyicisi içine HttpServletResponse
geçen başvurmak zorunda kalmadan daha bunu yapmak için daha iyi bir yol olacak gibi görünüyor yöntem.
Kullanabileceğim işleyici yönteminden @ResponseBody
ek açıklamasının yanı sıra döndürülebilen başka bir sınıf veya arabirim var mı?
"işleyici yöntem haline HttpServletResponse geçen" nesi var? – arahant
@arahant - Bu adil bir soru. Sanırım, her ne kadar mümkün olsa da, bir şeyler yapmanın doğru yolu değil. Bu soruda @Ralph'in bir yanıtı var (http://stackoverflow.com/questions/5673260/downloading-a-file-from-spring-controllers) testlerin zorlaştığını söylüyor. Bunu yapan çok sayıda işleyici yöntemi yazmadan önce, başka bir yol olup olmadığını öğrenmek istedim. Şimdiye kadar bir özel 'HttpMessageConverter' yazmak zorunda kalacakmış gibi görünüyor. –