본문 바로가기
spring

[Spring] @ResponseBody, return null, MessageConverter

by moonsiri 2020. 10. 9.
728x90
반응형

Controller에서 String이 반환되면 view 이름을 찾아서 JSP를 렌더링 하고, view가 없으면 404를 반환합니다.

@RequestMapping("main")
public String main() {
    return "main";
}

 

만약 method에 @ResponseBody 어노테이션이 적용되어 있다면 view를 찾지 않고, String 값을 그대로 반환합니다.

@ResponseBody
@RequestMapping("readUserNm")
public String readUserNm(UserVO param) throws Exception {
    return userService.readUserNm(param);
}

 

Dispatcher Servlet이 ModelAndView를 반환하면 ViewResolver가 실행됩니다.

@RequestMapping("main")
public ModelAndView main(ModelAndView mav) throws Exception {
    mav.setViewName("main");
    return mav;
}

 

@ResponseBody가 있으면 Object는 MessageConverter가 실행되어 반환됩니다.

@ResponseBody
@RequestMapping("readUserNm")
public Object readUserNm(UserVO param) throws Exception {
    return userService.readUserNm(param);
}

 

 

@ResponseBody가 있으면 MessageConverter가 실행되는데 null을 던지면 처리할 객체가 없어서 error가 발생합니다.

@ResponseBody
@RequestMapping("error")
public Object error() throws Exception {
    return null;  // error발생
}

 

Ajax로 값을 던졌는데 return값이 null일때는 계속 success가 아니라 error가 떨어져서 원인을 찾다 보니 MessageConverter 때문이었습니다.

하마터면 삽질한뻔 했네요 ㅎㅎ

728x90
반응형

댓글