본문 바로가기

thymeleaf

타임리프 html을 통째로 파편으로써 취급하여 상속

디렉토리

#불려갈 파편(layoutFile.html)

<!DOCTYPE html>
//파편명 layoutName, 매개변수 = paramTitle, paramContent
<html th:fragment="layoutName (paramTitle,paramContent)" xmlns:th="http://www.thymeleaf.org">
    <head>
    	//여기에 paramTitle의 인자가 들어감
        <title th:replace="${paramTitle}">어짜피 교체될 레이아웃 타이틀</title>
    </head>
    <body>
        <h1> 기본 레이아웃으로써 안사라질 레이아웃의 H1</h1>
		
        //여기에 paramContent의 인자가 들어감
        <div th:replace="${paramContent}">
            <p>어짜피 교체될 레이아웃의 컨텐츠</p>
        </div>

        <footer>
            기본 레이아웃으로써 안사라질 푸터
        </footer>
    </body>
</html>

 

 

#파편을 부르는(=상속받는) 파일(layoutExtendMain.html)

<!DOCTYPE html>
//					앞에는 파일경로를 포함한 파일명 :: 뒤에는 파편명과 인자
//~{::}구조에서 ::앞이 비었으면 현재파일을 의미, 인자가 태그명이면 동일 태그 전체가 인자로 들어감
<html th:replace="~{frame/layoutExtend/layoutFile :: layoutName(~{::title},~{::section})}"
xmlns:th="http://www.thymeleaf.org">

<head>
    <title>인자로 넘어갈 타이틀1</title>
    <title>인자로 넘어갈 타이틀2</title>
</head>
<body>
    <section>
        <p>인자로 넘어갈 섹션의, 컨텐츠</p>
    </section>
    <section>
        <p>인자로 넘어갈 섹션의, 컨텐츠2</p>
    </section>
</body>

</html>

 

#컨트롤러에서 layoutExtendMain.html을 호출하여 렌더링한 결과

 

기본레이아웃은 남겨둔채 바꾸고싶은 부분만 인자로 삼아서 교체가 가능하다.

 

'thymeleaf' 카테고리의 다른 글

타임리프 삼항 연산자  (0) 2022.06.30
타임리프 파편  (0) 2022.06.27
타임리프와 자바스크립트  (0) 2022.06.27
타임리프 div 여러개 묶어서 반복  (0) 2022.06.27
타임리프 div 여러개 묶어서 반복  (0) 2022.06.27