2013-06-19 11 views
1

Thymeleaf를 사용하여 JSF와 같은 복합 구성 요소를 만드는 방법이 있습니까? 표현 언어를 사용하여 검색 할 수있는 단편에 매개 변수를 보내는 방법을 알아 냈습니다. 하지만 나는 마크 업을 JSF에서 할 수있는 것처럼 파편에 보내는 방법을 알지 못했습니다.Thymeleaf 복합 구성 요소

예를 들어 왼쪽에 매우 유사한 메뉴가있는 여러 페이지가 있습니다. 내 모든 페이지에서 단일 조각을 사용할 수 있지만 메뉴 하단에 표시 할 마크 업을 전달하고 싶습니다. 일부 페이지는 아래쪽에 텍스트를 표시해야하고, 일부는 텍스트를 표시해야합니다. 예를 들어, 실제로는 그보다 복잡합니다.

<div class="menu" th:frament="menu"> 
    <a th:text="${menuItem1}"></a> 
    <a th:text="${menuItem2}"></a> 
    <a th:text="${menuItem3}"></a> 
    <markup sent as parameter /> <!-- how do I do this? --> 
</div> 



<div th:substitueBy="template :: menu" th:with="menuItem1=item1, menuItem2:item2, menuItem3:item3"> 
    <markup to be sent as parameter /> <!-- this does not work --> 
</div> 

답변

0

당신은 다음과 같이 수행 할 수 있습니다

을하지만 당신은 모든 메뉴 용기가 당신이 그것을 사용하는 모든 페이지 속성을 작성해야합니다.

내가 이런 식으로 정말 좋아 해달라고,하지만 난 그것을해야한다고 생각 작동 : P

템플릿 :

<div th:frament="menu"> 
    <a th:text="${menuItem1}"></a> 
    <a th:text="${menuItem2}"></a> 
    <a th:text="${menuItem3}"></a> 
</div> 

페이지 : 나는 또한 만들고 싶었

<div class="menu"> 
    <div th:include="template :: menu" 
     th:remove="tag" 
     th:with="menuItem1=item1, menuItem2:item2, menuItem3:item3" /> 
    <more markup/> 
</div> 
0

콘텐츠를 교환 할 수있는 복합 컴포넌트. 이것이 내가 thymeleaf-component-dialect을 개발 한 이유입니다. 이 방언으로

, 당신은 다음과 같이 구성 요소를 작성할 수 있습니다

<tc:content/> 태그

<div th:frament="menu"> 
    <a th:text="${menuItem1}"></a> 
    <a th:text="${menuItem2}"></a> 
    <a th:text="${menuItem3}"></a> 
    <tc:content></tc:content> 
</div> 

를 사용하여 구성 요소와 구성 요소 (A thymeleaf 조각) 만들기

<tc:menu> 
    <h1>Some Header</h1> 
    <p>Lorem ipsum dolor sit amet</p> 
</tc:menu> 

결과는

<div> 
    <a>Menu Item 1 Text</a> 
    <a>Menu Item 2 Text</a> 
    <a>Menu Item 3 Text</a> 
    <h1>Some Header</h1> 
    <p>Lorem ipsum dolor sit amet</p> 
</div> 

방언은 새 것이며 아직 알파 상태입니다. 피드백을 환영합니다.

+0

몇 년 늦었지만 감사합니다! 불행히도 나는 더 이상 thymeleaf를 사용하지 않으므로 라이브러리를 테스트 할 수 없습니다. – Hoffmann

+0

예, 늦었습니다. 그러나이 질문을 찾는 사람들에게 도움이 될 수 있습니다. – Serbroda