Spring/Spring Boot
[spring Boot] Thymeleaf 페이지 레이아웃
읽히는 블로그
2024. 8. 6. 12:34
▤ 목차
✔ Thymeleaf Layout Dialect dependency 추가 ***
⌨ build.gradle > dependencies 설정
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'
반드시 넣어줘야한다. dependency를 추가하고 나면 프로젝트를 refresh 해줘야한다.
👻 Refresh Gradle Project
해당 파일 우클릭 > gradle > Refresh Gradle Project 을 눌러 프로젝트를 리플레쉬해준다.
✔컨트롤러 작성
✨ 형식
@Controller
@RequestMapping(value="thleaf")
public class TestController {
@GetMapping("/ex5")
public String method5() {
return "show5";
}
}
👏 중요
spring 에서 해당 컨트롤러를 빈으로 등록하고 Controller(component)로 인지하고 viewResorve가 해당 파일명.html을 resources/templates에서 찾는다.
즉, resources/templates 하위에 show5.html 파일을 만들어준다.!
✔ header, footer 만들기
🔹header
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<div th:fragment="header">
머리글!!!
</div>
</html>
🔹footer
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<div th:fragment="footer">
footer영역!
</div>
</html>
✔ layout 파일 만들기
🔸 이미지
이런 식으로 들어가는 것이다.
💻 코드로 보기
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
<meta charset="UTF-8">
<title>😉🧐😉</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/>
</head>
<body>
<!-- th:block 마땅한 태그가 없는 경우 사용할 수 있다. -->
<th:block th:replace="fragments/header::header"></th:block>
<div layout:fragment="content" class="content"></div>
<th:block th:replace="fragments/footer::footer"></th:block>
</body>
</html>
✔ view 파일
🔷 layout : decorate
🔹 코드로 보기
<!DOCTYPE html>
<html xmlns:th="http//www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layouts/layout1}">
<head>
<meta charset="UTF-8">
<title>(❁´◡`❁)</title>
</head>
<body>
<h2>show5 문서(레이아웃 결과)</h2>
<div layout:fragment="content">
<table border="1">
<tr>
<th>번호</th><th>종류</th>
</tr>
<tr>
<td>1</td><td>짱구</td>
</tr>
<tr>
<td>2</td><td>유리</td>
</tr>
<tr>
<td>3</td><td>철수</td>
</tr>
</table>
</div>
</body>
</html>
👏 중요
layout으로 묶인 부분만 들어간다.
즉, 위의 코드의 h2 태그는 layout에 포함되지 않기에 들어가지 않는다.
😊결과