wintertreey 님의 블로그
thymeleaf layout. 머릿글 바닥글. th:block. 본문
Thymeleaf Layout Dialect를 이용하면 하나의 레이아웃을 여러 페이지에 똑같이 적용할 수 있다. 공통적으로 적용되는 레이아웃을 미리 만들어놓고 현재 작성 중인 페이지만 레이아웃을 끼워넣으면 된다.
대표예시가 머릿글 바닥글이 있다.
파일의 흐름은 다음과 같다.
index.html
타임리프연습. test5 하이퍼링크
>>>
testcontroller.java로 이동
@getmapping 작업.
>>>
show5.html로 이동.
layout 링크 호출.
header, footer.html을 다음의 위치에 만들어준다.
layout1.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/>
</head>
<body>
<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>
머릿글 바닥글은 <th:block>으로 처리해주었고, 본문은 <div>로 설정해두었다.
<th: block>
머릿글, 바닥글용도. 고정. 정적.
th:block은 타임리프에서 템플릿 조각을 생성하는 데 사용된다. 이 태그는 렌더링 시 아무것도 출력하지 않고, 템플릿의 다른 부분에서 이 블록을 참조할 수 있게 해준다.
- 용도: 주로 프래그먼트를 삽입하거나 템플릿의 일부분을 재사용할 때 사용
- 특징: HTML의 유효성을 유지하면서 내용을 포함할 수 있다. 이 태그는 렌더링 시에 아무것도 출력하지 않지만, 다른 템플릿에서 th:replace나 th:include로 사용할 수 있다.
<th:replace>
replace는 말 그대로 '대체'하는 방법이다. 현재 태그를 템플릿 조각에 있는 태그로 대체하는 방법
<th:insert>
insert는 현재 태그를 유지하면서 템플릿 조각을 가져오는 방법
<div>
본문 용도. 유동적. 동적.
layout:fragment
layout:fragment는 레이아웃 템플릿의 구조를 정의하는데 사용된다. 이 태그는 상속받은 템플릿에서 내용을 동적으로 채울 수 있습니다.
- 용도: 템플릿의 본문 부분을 동적으로 채우기 위해 사용.
- 특징: content라는 이름의 레이아웃 조각을 정의하고, 다른 템플릿에서 이 조각에 내용을 삽입할 수 있게 합니다.
++ 머릿글 바닥글이 출력되지 않았던 이유
Gradle에 라이브러리를 추가하지 않았었다.
그리고 꼭 리프레시를 해주자!
전체 소스코드는 깃허브의 sprweb7th를 참고하자.
https://github.com/yoonah0327/spring_source.git
https://ddururiiiiiii.tistory.com/397
https://devfoxstar.github.io/java/thymeleaf-layout-dialect/
'백엔드 > Spring' 카테고리의 다른 글
Application yml. Thymeleaf 란? status. jar 배포. (1) | 2024.07.16 |
---|---|
@MVC DB연동 1 (0) | 2024.07.16 |
DB 연동4/4_ JPA. DB dialect hibernate. debug. entity dto (2) | 2024.07.14 |
DB 연동3/4_mybatis. lombok annotation. (0) | 2024.07.14 |
DB 연동 2/4_ JdbcDaoSupport (1) | 2024.07.14 |