본문 바로가기
Spring Boot/Thymeleaf

Thymeleaf #2 [~{} - Fragment]

by Lee David 2020. 6. 19.
반응형

Fragment 이용하기

Html을 이용해 화면을 그리다 보면 항상 중복된 메뉴나 정보등을 나타내고자 하는 경우가 생깁니다.

 

Header의 메뉴나 Footer의 정보등을 그릴 때 사용한다.
위의 그림은 header와 footer의 이해도를 높이기 위한 그림입니다.

위의 그림과 같이 중복된 메뉴나 정보등을 나타낼때 Thymeleaf에서 지원하는 도구가 "Fragment" 입니다.

먼저 menu.html에 화면 상단에 들어갈 코드를 준비합니다.

<body>
    <div th:fragment="header">
    	<a href="www.a.com">a Page</a>
        <a href="www.b.com">b Page</a>
    </div>
</body>

이후에 info.html에 들어갈 코드도 준비합니다.

<body>
    <div th:fragment="info">
        이 페이지는 관리자 페이지 입니다.
    </div>
</body>

이 후에 view1.html에 menu 부분과 info 부분을 작성합니다.

<body>
    <div>
        <div th:replace="fragment/menu :: menu">여기는 menu</div>
        <div>
            여기는 view1.html 페이지 입니다.
        </div>
        <div th:replace="fragment/info :: info">여기는 info</div>
    </div>
</body>

여기서 th:replace란?

현재 페이지에 작성된 dom의 내용을 치환 한다는 의미입니다.

 

fragment/info :: info를 해석해 보겠습니다.

fragment/info는 info.html을 이야기 합니다. 그리고 "::" 뒤에 오는 info는 info.html에서 th:fragment="info"를 이야기 합니다.

 

그럼 응용 해서 만약 info.html에 th:fragment="info_user"가 있고 이 dom을 fragment로 정의 하고 싶다면 어떻게 될까요?

<body>
    <div>
        <div th:replace="fragment/menu :: menu">여기는 menu</div>
        <div>
            여기는 view1.html 페이지 입니다.
        </div>
        <div th:replace="fragment/info :: info_user">여기는 info_user</div>
    </div>
</body>

이렇게 간단하게 위에 예시로 나와있는 그림과 동일한 구조를 만들 수 있습니다.

 

감사합니다.

반응형

'Spring Boot > Thymeleaf' 카테고리의 다른 글

Thymeleaf #1 [문법 정리]  (0) 2020.06.17
Thymeleaf #0  (0) 2020.06.16