[英]Thymeleaf composite components
有什么方法可以使用Thymeleaf制作復合組件(例如在JSF中)? 我發現了如何將參數發送到可以使用表達式語言檢索的片段。 但是我還沒有弄清楚如何像在JSF中那樣將標記發送到片段。
例如,我有幾個頁面的左側菜單非常相似。 我希望能夠在所有頁面上使用一個片段,但是傳遞一些標記以顯示在菜單底部。 有些頁面必須在底部顯示文本,有些頁面必須顯示文本,例如,實際上比這要復雜得多。
<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>
我還想創建具有可交換內容的復合組件。 這就是為什么我開發了百里香葉成分方言 。
使用這種方言,您可以編寫如下組件:
使用<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>
使用組件
<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>
該方言是新的,仍處於字母狀態。 歡迎反饋。
您可以執行以下操作:
但是您必須將所有菜單容器屬性寫入使用的每個頁面。
我不是很喜歡這種方式,但是我認為它應該可以: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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.