Thymeleaf의 th:replace와 th:include는 이렇게 구분한다!
7575 단어 Thymeleafspring-bootspring
먼저 결론
먼저 결론만 써 둡니다.
공통화하고 싶은 파트가 하나의 태그에 들어가 있으면
th:replace
, 그렇지 않으면 th:include
를 사용한다.Thymeleaf는 부품의 공통화를 위해 두 가지 방법을 제공합니다.
th:replace
와 th:include
입니다. 이들은 위의 규칙에 따라 구분할 수 있습니다.본가 사이트에도 th:include와 th:replace의 차이 라는 항목은 있어, 이하와 같이 쓰여져 있습니다만,
th:include와 th:replace의 차이점은 무엇입니까? th:include 는 호스트 태그 안에 조각의 내용을 포함하는 반면 th:replace 는 실제로 호스트 태그를 조각으로 바꿉니다.
나에게는 처음에는 잘 몰랐다.
거기서 거동을 정리해 보았더니, 본가의 해설의 의미에도 심플한 룰에도 눈치챘습니다.
그럼 차례로 거동을 봅시다.
이하에 등장하는 코드는 github 에 들고 있습니다.
th:replace의 거동
th:replace
는 작성된 태그를 th:fragment가 작성된 태그로 대체합니다.단순히 태그를 대체하므로 th:replace 태그와 th:fragment 태그가 1:1 대응해야 합니다.
예를 들어 이 경우
th:replace
를 사용할 수 있습니다.src
<div th:replace="common::replace"></div>
<hr class="ui divider">
<div th:replace="common::replace"></div>
디스플레이
<div class="ui container">
<div class="ui buttons">
<button class="ui primary button">Save</button>
<div class="or"></div>
<button class="ui button">Cancel</button>
</div>
</div>
<hr class="ui divider">
<div class="ui container">
<div class="ui buttons">
<button class="ui primary button">Save</button>
<div class="or"></div>
<button class="ui button">Cancel</button>
</div>
</div>
<button>
의 집합이 그룹화되어 하나의 태그로 정리되어 있기 때문에 th:replace
에서 가츨으로 대체해 버리면 깨끗하게 의도한 View를 구축할 수 있네요.th:include의 거동
th:include
는 써진 태그는 그대로, 태그의 내부를 재기입합니다.th:replace
와 달리 공통 부품과 1:1 대응이 아니어도 대체가 가능합니다.src
<div class="ui three item menu" th:include="common::include"></div>
<hr class="ui divider">
<div class="ui vertical menu" th:include="common::include"></div>
디스플레이
<div class="ui three item menu">
<a class="active item" href="#">item 1</a>
<a class="item" href="#">item 2</a>
<a class="item" href="#">item 3</a>
</div>
<hr class="ui divider">
<div class="ui vertical menu">
<a class="active item" href="#">item 1</a>
<a class="item" href="#">item 2</a>
<a class="item" href="#">item 3</a>
</div>
th:include
를 쓴 태그의 class 지정에 의해, 세로와 가로 줄이 바뀌어 있습니다. 이러한 지정을 하고 싶을 때는 th:include
가 유효하다고 할 수 있습니다.요약 : 만들 수없는 구성도 있으므로 조심하십시오.
그러나, 이것은 공통화 부품이 하나의 태그에 정리되어 있지 않고, 한편 부모 태그가 공통 부품 이외의 아이 요소를 가지고 있으면 쓸 수 없습니다.
example
<div>
<p>共通化したい部品1</p>
<p>共通化したい部品2</p>
<p>共通化したい部品3</p>
<div>このページ固有の要素たち</div>
</div>
일단 지금은 그런 상황에 조우하고 있지 않습니다만, 그렇게 되면 HTML의 구성으로 흡수할 수밖에 없을 것 같습니다.
Reference
이 문제에 관하여(Thymeleaf의 th:replace와 th:include는 이렇게 구분한다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/blackawa/items/e32258e17f142e60b66d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)