Как получить размер отфильтрованного списка в Thymeleaf при объединении th: each и th: if? - PullRequest
0 голосов
/ 11 октября 2019

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

Предполагая, что размер списка транзакций равен 5, и он содержит 3 типа, который я пытаюсь отфильтровать, он по-прежнему возвращает размер списка как 5 вместо 3. Если я распечатываю значения, появляется только 3, так что я знаю, что данные в порядке иТимилеф может фильтровать его, как и ожидалось

<th:block th:each="transaction,iter : ${transactions}" th:object="${transaction}" th:if="${transaction.test} == 'test'">
<tr>
<td><span th:text="${iter.size}"></span></td>
</tr>
</th:block>

Я ожидаю, что вывод будет 3, потому что в списке транзакций он содержит 3 «тестовых» значения и 2 нежелательных значения. Однако он дает мне размер 5 вместо 3. Распечатывая значения, он генерирует 3 строки (как и ожидалось), но со значением 5 (должно быть 3 после фильтрации).

1 Ответ

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

th:if не меняет список. Он просто контролирует, появляется ли фрагмент HTML.

При этом вы можете сделать это с помощью подбор коллекции . Например, что-то вроде этого:

<tr th:with="filtered=${transactions.?[test == 'Test']}">
    <td th:text="${filtered.size()}" />
</tr> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...