스프링 부트에서 대표적인 뷰 프레임워크인 타임리프(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" 부분에서 등록되야하는 템플릿이 나타나지 않는 것 이였습니다.
이것저것 찾아서 바꾸어 보았지만 결과는 그냥 단순한 페이지만 나올 뿐 이였습니다.
그나마 "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)가 동작하지 않는 경우에 대해서 소개하여 보았습니다.
궁금한점 또는 틀린부분은 언제든 연락주세요!👻
'Spring framework > Spring boot' 카테고리의 다른 글
스프링부트에서 모바일에 따른 뷰 페이지(Springboot mobile view) (2) | 2022.10.12 |
---|---|
TemplateInputException An error happened during template parsing(타임리프 오류) (0) | 2022.07.22 |
Spring boot Security(스프링부트 시큐리티) (0) | 2022.06.22 |
간단하게 구성하는 SpringBoot Websokcet server(스프링부트 웹소켓 서버) (3) | 2021.12.27 |
QuartzJobBean에서 ApplicationContext을 통해 서비스(Bean) 받기 (2) | 2021.11.26 |
댓글