본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Spring framework/Spring boot

Spring boot thymeleaf layout decorate(layout decorate가 동작하지 않을 때)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2022. 7. 22.

 

스프링 부트에서 대표적인 뷰 프레임워크인 타임리프(thymeleaf)를 오랜만에 적용하여 보았습니다.

* SPA 기술의 발전으로 점점 안쓰게 되지 않을 까 합니다..ㅎ;

 

구글링하여 진도를 잘 빼고 있는데 아래 코드를 만들 때 문제가 발생 하였습니다.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
    xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
    layout:decorate="~{/layout/body}">

    <th:block layout:fragment="content">   
		<div>member page</div>
		<form action="logout" method="post" class='card'>
			<input type='submit' value='로그아웃' />
		</form>
    </th:block>
    
</html>

 

"layout : decorate" 부분에서 등록되야하는 템플릿이 나타나지 않는 것 이였습니다.

이것저것 찾아서 바꾸어 보았지만 결과는 그냥 단순한 페이지만 나올 뿐 이였습니다.

html 테그에 속성이 그대로 나오네요;;

 

그나마 "layout : fragment"는 잘 동작하고 있으며 "th : replace" 같은 지시어도 잘 동작하였습니다.

무언가 설정을 안하거나 라이브러리를 빼먹었다는 결론에 도달한 이후 이것저것 찾다가..

layout 속성에 필요한 라이브러리를 추가하지 않은 것을 발견하였습니다.

 

여러 블로그에 "타임리프 설치"와 관련된 구글링하면 아래 라이브러리만 추가하라고 하는데...

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

 

여기서 1개 더 추가해야 위 layout decorate가 동작 합니다.

<dependency>
    <groupId>nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>

 

타임리프에서 레이아웃 데코레이터(layout decorate)를 사용하기 위해서는 꼭 2가지 라이브러리를 사용해야되는 점 잊지말아야 겠습니다!

역시나 프레임워크나 라이브러리를 사용 할 때는 만든 곳에서 확인하는게 최고인 거 같습니다..

* 아니 근데 왜 구글링한 블로그에서는 맨 위 라이브러리만 소개하는지..

 

이상으로 타임리프에서 레이아웃 데코레이트(layout decorate)가 동작하지 않는 경우에 대해서 소개하여 보았습니다.

궁금한점 또는 틀린부분은 언제든 연락주세요!👻

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글