Spring Boot @Controller ModelAndView jsonView 적용하기
Web Application 에서 ModelAndView를 사용할 때 @ResponseBody 어노테이션 대신 jsonView를 이용하여 응닶데이터를 json 형식으로 내려주기!
# 환경
/**
* tool: STS 4.13.0
* version: 2.7.3-SNAPSHOT
* java: 1.8
* type: MAVEN
* view: THYMELEAF
*/
# Bean
/* jsonView Data Converter (new ModelAndView("jsonView")) */
@Bean
public MappingJackson2JsonView jsonView() {
return new MappingJackson2JsonView();
}
# 테스트
/* jsonView */
@PostMapping("/form1")
public ModelAndView form1(ModelAndView mav, @ModelAttribute TestPVO testPVO) {
log.debug("[PARAMETER] {}", testPVO);
mav.setStatus(HttpStatus.OK);
mav.setViewName("jsonView");
mav.addObject("text", testPVO.getText());
mav.addObject("html", testPVO.getHtml());
mav.addObject("script", testPVO.getScript());
return mav;
}
/* ResponseBody */
@PostMapping("/form2")
@ResponseBody
public TestPVO form2(@ModelAttribute TestPVO testPVO) {
log.debug("[PARAMETER] {}", testPVO);
return testPVO;
}
# 결과
{
"html":"<div>Hello World<div>",
"text":"test",
"script":"<script>function test() { alert('hello world!');}</script>",
}
# 내용
- @RestController 에선 사용하진 않지만, @Controller에서 자주 사용된다.
- return을 ModelAndView를 사용 한다면, 메소드 마다 @ResponseBody를 붙이지 않고 setViewName("jsonView") 나 new ModelAndView("jsonView")로 생성하여 사용한다.
- 화면 Contoller에서 ajax 호출 시 응답을 json으로 받을 때 용이하다.
'스프링 부트' 카테고리의 다른 글
[SpringBoot] ajax - multipart/form-data 로 요청하기! (0) | 2022.08.14 |
---|---|
[SpringBoot] ajax - html form tag 로 요청하기! (0) | 2022.08.13 |
[SpringBoot] ajax - application/json 로 요청하기! (0) | 2022.08.13 |
[SpringBoot] ajax - application/x-www-form-urlencoded 로 요청하기! (0) | 2022.08.13 |
[SpringBoot] JasyptEncryptor 적용하기 (0) | 2022.08.06 |