스프링/4. 스프링 MVC-2

14. 템플릿 조각

sdafdq 2023. 8. 24. 22:13

템플릿 조각은 미리 만들어 놓은 특정 태그를 불러다 쓸 수 있는거. 왜 웹페이지마다 같은 사이트라면 nav, main menu, footer 등 중복되는 부분이 있는데 그걸 미리 그 부분만 정의해둔다음에 가져다 쓰는거임.

@Controller
@RequestMapping("/template")
public class TemplateController {
    @GetMapping("/fragment")
    public String template(){
        return "/template/fragment/fragmentMain";
    }
}

그냥 호출

 

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>부분 포함</h1>
<h2>부분 포함 insert</h2>
<div th:insert="~{template/fragment/footer :: copy}"></div>
<h2>부분 포함 replace</h2>
<div th:replace="~{template/fragment/footer :: copy}"></div>
<h2>부분 포함 단순 표현식</h2>
<div th:replace="template/fragment/footer :: copy"></div>
<h1>파라미터 사용</h1>
<div th:replace="~{template/fragment/footer :: copyParam ('데이터1', '데이터2')}"></div>
</body>
</html>

<div th:insert="~{경로 :: 조각이름}">

insert는 안에다 넣는거, replace는 대체.

div th:insert면 이 div 안쪽으로 넣는거임.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<footer th:fragment="copy">
  푸터 자리 입니다.
</footer>
<footer th:fragment="copyParam (param1, param2)">
  <p>파라미터 자리 입니다.</p>
  <p th:text="${param1}"></p>
  <p th:text="${param2}"></p>
</footer>
</body>
</html>

저렇게

<태그명 th:fragment="copy">

  ~~

<닫는태그>

 

이렇게 하면 다른 곳에서 

<div th:insert="~{저footer있는경로 :: copy}">

쓰면 저거 가져다 쓰는거임.

 

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>부분 포함</h1>
<h2>부분 포함 insert</h2>
<div><footer>
  푸터 자리 입니다.
</footer></div>
<h2>부분 포함 replace</h2>
<footer>
  푸터 자리 입니다.
</footer>
<h2>부분 포함 단순 표현식</h2>
<footer>
  푸터 자리 입니다.
</footer>
<h1>파라미터 사용</h1>
<footer>
  <p>파라미터 자리 입니다.</p>
  <p>데이터1</p>
  <p>데이터2</p>
</footer>
</body>
</html>

실행 후임.

insert로 안에 들어간거 확인,

replace는 교체된걸로 확인.

 

<footer th:fragment="copyParam (param1, param2)">
  <p>파라미터 자리 입니다.</p>
  <p th:text="${param1}"></p>
  <p th:text="${param2}"></p>
</footer>

이렇게 인자도 받을 수 있음. 

<태그명 th:fragment="조각명(변수명1, 변수명2)">

<div th:replace="~{template/fragment/footer :: copyParam ('데이터1', '데이터2')}"></div>

<태그명 th:조각메소드="~{경로 :: 조각명(값1, 값2)}">

 

 

~{경로 :: 조각이름(인자)}

이게 조각 표현식임 ~{  }

'스프링 > 4. 스프링 MVC-2' 카테고리의 다른 글

16. 레이아웃 템플릿 확장  (0) 2023.08.26
15. 템플릿 레이아웃  (0) 2023.08.25
13. 타임리프 상에서 자바스크립트 사용  (0) 2023.08.24
12. 타임리프 블록  (0) 2023.08.23
11. 타임리프 주석  (0) 2023.08.23