본문 바로가기
Spring Framework/Spring

스프링부트 @RestController return HTML로 받는 방법

by wakestand 2021. 11. 12.
반응형

스프링부트, Thymeleaf를 사용하여 개발 중

클래스에 @RestController 어노테이션을 선언하여

 사용하고 있는 경우에는 String으로 Return을 시켜도

 

Return한 값에 해당하는

.html 파일이 열리는 것이 아니라

그냥 String을 반환해 버리던데

 

그렇다고 @Controller를 사용하면

이번에는 .html 파일이 열리기는 하는데

값을 넘기지를 못한다

 

찾아보니 @RestController를 사용하건

@Controller를 사용하건

ModelAndView를 사용해주면 해결이 되는 문제인데

 

    @GetMapping("searchTotalPageviews")
    public ModelAndView SearchTotalPageviews() throws IOException {
        // ~ 코드 생략
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("Result");
        modelAndView.addObject("response", 넘길_값);

        return modelAndView;
    }

 

위와 같이 Return 타입을 ModelAndView로 준 다음

ModelAndView 객체를 선언하고

setViewName("html값") 으로 이동할 HTML을 지정해준 뒤

 

addObject("HTML에서_사용할_변수명", 값);

을 설정한 뒤 ModelAndView를 반환하고

 

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    Result <br>
    <span th:text="${response}"></span>
</body>
</html>

HTML에서는 ${HTML에서_사용할_변수명}

사용해서 값을 끌어와주면

@RestController / @Controller에 상관없이

페이지 이동과 값 Return이 동시에 되는 것이 보인다

반응형

댓글