2011-11-08 2 views
3

일반적으로 내 Controllers 메소드에서 JSON을 반환하기 위해 @ResponseBody 주석을 추가하고 Jackson이 반환 된 객체를 JSON으로 매핑하도록했습니다. 여기에 문제 없습니다. void를 반환하는 컨트롤러 메서드에서 JSON을 생성 할 수 있습니까?

그러나 this question에서, 영업 이익은 "반환 무효를 @RequestMapping 사용하십시오 내 다른 방법을, 나는 여전히 아약스를 통해 그들로부터 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

권리, 나는 그것에 대해 생각합니다, 감사합니다. 그러나 열등한 선택이 보인다. -이 경우 [매뉴얼] (http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html) *에서 '@ ResponseBody'가 필요하지 않습니다. "메소드가 @ResponseBody로 주석 된 경우 반환 유형이 응답 HTTP 본문에 기록되며 반환 값은 HttpMessageConverters를 사용하여 선언 된 메소드 인수 유형으로 변환됩니다"* – stivlo

+0

예, 개인적으로 왜 이런 식으로하고 싶다 ... 나는 프로덕션에 가지 않았다! 나는 그것이 가능하다는 것을 알고 있습니다. – Danalog

+0

그리고 내 호기심에 대답합니다. 감사합니다. – stivlo

관련 문제