2015-06-18 49 views
7

的Thymeleaf 2.1.4官方文檔演示for each用法如下:Thymeleaf:如何在使用th時排除外部標籤:每個?

<tr th:each="prod : ${prods}" th:class="${prodStat.odd}? 'odd'"> 
    <td th:text="${prod.name}">Onions</td> 
    <td th:text="${prod.price}">2.41</td> 
    ... 
</tr> 

它產生在每個迭代中,這是在這種情況下,完美契合一個<tr>。但在我的情況下,我不需要外部標籤(在這裏,<tr>)。


我用例是一個遞歸的方式產生<bookmark>標籤,沒有任何其他標記包括,和<bookmark>標籤必須包含名稱和href屬性。

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> 
<body> 

<div th:fragment="locationBookmark(location)"> 
    <bookmark th:each="map : ${location.subMaps}"> 
     <bookmark th:name="${map.name}" 
        th:href="'#'+${map.id}" th:include=":: locationBookmark(${map})"> 
     </bookmark> 
    </bookmark> 
</div> 
</body> 
</html> 

的包邊:

<bookmark th:include="bookmark : locationBookmark(${rootLocation})"/> 

非常感謝。

+0

你能提供標籤的樣品要不是附近的外標籤? –

+0

@PavelUvarov我的用例添加,請參閱我的問題。 – July

+0

讓我猜測:你想製作n級別的兒童標籤嗎?我認爲是因爲:書籤不是html標籤,因爲不建議不要關閉帶有內容的標籤。如果我是對的 - 你應該以遞歸的方式創建和使用一些子模板。我不想讓ThymeLeaf說你應該怎麼做,但我確定知道這是可能的 - 請仔細閱讀他們的文檔。 –

回答

20

即使能使用th:remove="tag"做我會建議你使用th:block

<th:block th:each="map : ${location.subMaps}"> 
    <bookmark th:name="${map.name}" 
     th:href="'#'+${map.id}" th:include=":: locationBookmark(${map})"> 
    </bookmark> 
</th:block> 
+0

很高興知道,非常感謝 – July

+0

@Xipo我更正了 ..希望對於所有Thymeleaf版本都是正確的,但是因爲XML是潛在的... –

0

您可以使用DIV標記或任何其他HTML標記進行循環。這不會生成TR標記。但是要正確呈現表格,您需要在TR標記內部有TD標記。

<div th:each="prod : ${prods}" th:class="${prodStat.odd}? 'odd'"> 
    <td th:text="${prod.name}">Onions</td> 
    <td th:text="${prod.price}">2.41</td> 
</div> 
+0

我想要的是完全刪除標籤,而不是更改其名稱。 – July

0

我想通了,如何解決這個問題,這很容易,只需添加th:remove="tag"到外標籤就行了。

相關問題