[Spring][Thymeleaf] 공통 레이아웃 적용 (Thymeleaf Layout Dialect)

2023. 2. 14. 12:00·공부/Spring
728x90

페이지를 구성하다보면 공통적으로 들어가는 부분이 존재한다.

 

이러한 공통적인 부분들을 따로 만들어서 각각의 페이지에 끼워넣기만 하면 편리할 것이다.

 

이를 도와주는 것이 Thymeleaf Layout Dialect이다.

 

build.gradle의 dependencies에 다음 코드를 추가한다.

dependencies{
.
.
.

    implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}

타임리프가 이미 추가되어있다면 dialect만 추가하면 된다.

 

이제 공통 레이아웃을 만들 차례이다.

 

나는 commons.html 안에 다음과 같이 공통 영역들을 만들었다.

 

<commons.html>

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
  <div th:fragment="common1">
    <h1>공통 영역 1</h1>
  </div>

  <div th:fragment="common2">
    <h1>공통 영역 2</h1>
  </div>

  <div th:fragment="common3">
    <h1>공통 영역 3</h1>
  </div>
</html>

th:fragment를 사용하여 외부에서 이 공통 영역에 접근하기 위해 필요한 이름을 정한다.

 

외부에서 공통 영역 1을 사용하려면 common1이라는 이름을 사용해야한다.

 

그리고 이를 page.html에 적용해보려 한다.

 

<page.html>

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div th:replace="./commons::common1"></div>
    <div th:replace="./commons::common2"></div>
    <div th:replace="./commons::common3"></div>
</body>
</html>

 

사용할 때는 다음과 같이 사용한다.

 

th:replace=" [ 공통 레이아웃 파일 위치 ] :: [ 공통 영역 이름 ] " 

 

<controller>

@Controller
public class ViewController {
    @GetMapping("/views/page")
    public String pageController() {
        return "page";
    }
}

http://localhost:8080/views/page

 

 

웹 사이트를 구성할 때 footer나 navbar의 경우 어느 페이지를 들어가나 항상 같은 형태를 유지해야하는 경우가 많기 때문에 이럴 경우 Thymeleaf layout dialect를 적극적으로 활용하면 좋을 듯 하다.

728x90

'공부 > Spring' 카테고리의 다른 글

[Spring][인프런 스프링 MVC] MVC 구를 직접 개선해가며 스프링 MVC 구조를 이해하기 (controller v1~v4)  (0) 2023.03.01
[Spring] 스프링 mysql 데이터베이스와 jpa 연동  (2) 2023.02.17
[Spring][Thymeleaf] 타임리프 기초 문법  (2) 2023.02.12
[Spring][JPA] H2 데이터베이스를 사용한 JPA 기초 사용법  (0) 2023.02.10
[Spring][스프링 MVC 1편] 서블릿 기초 사용법  (0) 2023.02.08
'공부/Spring' 카테고리의 다른 글
  • [Spring][인프런 스프링 MVC] MVC 구를 직접 개선해가며 스프링 MVC 구조를 이해하기 (controller v1~v4)
  • [Spring] 스프링 mysql 데이터베이스와 jpa 연동
  • [Spring][Thymeleaf] 타임리프 기초 문법
  • [Spring][JPA] H2 데이터베이스를 사용한 JPA 기초 사용법
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    influxDB CLI
    푸쉬 알람
    스프링 OAuth2
    Merge
    AWS Lambda
    ChatPromptTemplate
    RNN
    embedding
    nn.RNN
    binary search
    bfs
    스택
    다익스트라
    codetree
    code tree
    openvidu 배포
    ci/cd
    parametric search
    Vector Store
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[Spring][Thymeleaf] 공통 레이아웃 적용 (Thymeleaf Layout Dialect)
상단으로

티스토리툴바