Повторное создание <tr>AND <td>в Thymeleaf - PullRequest
0 голосов
/ 20 октября 2019

У меня есть структура данных, которая выглядит следующим образом:

class Tag {
  String text;
  long count;
}

И я храню ее в списке. Я использую это для классической конструкции «облако тегов», где она будет показывать, сколько раз (количество) слово (текст) появляется в моей базе данных, например так:

Billing,10
Balance,6
Account,3
Complaint,1

Я знаю, что могуиспользуйте th-итераторы, чтобы динамически поместить это в таблицу, например так:

<tr>
  <td>Billing</td><td>10</td>
</tr>
<tr>
  <td>Balance</td><td>6</td>
</tr>
<tr>
  <td>Account</td><td>3</td>
</tr>
<tr>
  <td>Complaint</td><td>1</td>
</tr>

Однако я пытаюсь отобразить эти данные в виде текста и считать в одной ячейке, а затем динамически создать структуру сетки:

(max column width is 3):

<tr>
  <td>Billing - 10</td>
  <td>Balance- 6</td>
  <td>Account- 3</td>
</tr>
<tr>
  <td>Complaint - 1</td>
</tr>

Как использовать итератор для генерации строк и столбцов?

1 Ответ

0 голосов
/ 21 октября 2019

Вы должны использовать другую библиотеку, чтобы разбить массив на группы по 3 (в Apache Commons Collections 4.4 есть такой метод), затем вы можете просто перебирать их. Например:

<table th:with="partitions=${T(org.apache.commons.collections4.ListUtils).partition(tags, 3)}">
    <tr th:each="partition: ${partitions}">
        <td th:each="tag: ${partition}"><span th:text="${tag.text}" /> - <span th:text="${tag.count}" /></td>
    </tr>
</table>
...