2016-04-20 12 views
7

Ich kann keine Syntax zum Erstellen einfacher for-each-Schleife in Thymeleaf Vorlage finden. Ich bin nicht zufrieden mit nur th:each="" Attribut, weil es Tag kopiert, in dem es sich befindet.Für jeden Operator in Thymeleaf

Was ich suche ist so etwas wie:

<th:foreach th:each="..."> 
...block to be repeated... 
</th> 

was analog <c:forEach items="..." var="..."> oder <t:loop source="..." value="..."> in Tapestry. Ist etwas ähnliches dafür?

Antwort

14

Verwenden th:block wie in der Führungs Thymeleaf angegeben

th:block ist nur ein Attribut Container, die Template-Entwickler angeben, je nachdem, welche Attribute sie wollen kann. Thymoleaf führt diese Attribute aus und lässt den Block dann einfach spurlos verschwinden.

So könnte es sinnvoll sein, wenn beispielsweise iteriert Erstellen von Tabellen, die mehr erfordern als ein <tr> für jedes Element:

<table> 
    <th:block th:each="user : ${users}"> 
     <tr> 
     <td th:text="${user.login}">...</td> 
     <td th:text="${user.name}">...</td> 
     </tr> 
     <tr> 
     <td colspan="2" th:text="${user.address}">...</td> 
     </tr> 
    </th:block> 
</table> 
3

Die th:block Lösung ist auf jeden Fall die beste, aber alternativ können Sie auch versuchen, mit th:remove="tag", um das mit Etikett zu entfernen:

<table> 
    <tbody th:each="user : ${users}" th:remove="tag"> 
     <tr> 
     <td th:text="${user.login}">...</td> 
     <td th:text="${user.name}">...</td> 
     </tr> 
     <tr> 
     <td colspan="2" th:text="${user.address}">...</td> 
     </tr> 
    </tbody> 
</table> 

der Vorteil dieses Ansatzes ist, dass Sie auch auf einen Thymeleaf Ausdruck th:remove um passieren zu Entfernen Sie das Etikett bedingt, z. wenn Sie möchten, dass nur einige Benutzer in einem <tbody> enthalten sind, neben anderen interessanten Anwendungen.

ist die Dokumentation für th:remove.

+0

'th: remove' ist, was ich vermutete, aber noch nicht ausprobiert :-) Vielen Dank. – Andremoniy

+0

@ekemchitsiga war der erste, also wird seine Antwort akzeptiert. Und +1 an dich auch :) – Andremoniy