2016-04-20 1 views
7

Я не могу найти синтаксис для построения простого для каждого цикла в шаблоне Thymeleaf. Я не удовлетворен атрибутом th:each="", потому что он копирует тег, в котором он находится.Для каждого оператора в Thymeleaf

Что я ищу что-то вроде:

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

, что является аналогом <c:forEach items="..." var="..."> или <t:loop source="..." value="..."> в Tapestry. Что-нибудь подобное для этого?

ответ

14

Использование th:block, как указано в руководстве Thymeleaf

th:block является лишь атрибутом контейнер, который позволяет разработчикам шаблонов указать какой атрибуты они хотят. Thymeleaf выполнит эти атрибуты, а затем просто сделает блок незаметным.

Так что может быть полезно, например, при создании итерированные таблиц, которые требуют более одного <tr> для каждого элемента:

<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

th:block решение, безусловно, лучший, но в качестве альтернативы вы можете также попробовать использовать th:remove="tag" для того, чтобы удалить тег, содержащий:

<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> 

преимущество этого подхода заключается в том, что вы также можете передать выражение Thymeleaf в th:remove для того, чтобы на Условно удалите тег, например. если вы хотите, чтобы только некоторые пользователи были включены в <tbody>, помимо других интересных применений.

Here - это документация для th:remove.

+0

'th: remove' - это то, о чем я догадался, но еще не пробовал :-) Большое вам спасибо. – Andremoniy

+0

@ekemchitsiga был первым, поэтому его ответ будет принят. И +1 к вам тоже :) – Andremoniy

Смежные вопросы