15

I make a search and get response from server with Thymeleaf. This holds the number of results:

${response.count}

I want to make an iteration like that:

for (int i = 1; i <= response.count; i++) {
    if (response.page == i) {
        <button class="active">Dummy</button>
    } else {
        <button>Dummy</button>
    }
}

How can I do that? I've tried something like that:

${#numbers.sequence(0, response.count)}

but didn't work.

EDIT: I've tried that but didn't work too:

<button th:each="i: ${#numbers.sequence(0, response.count - 1)}" th:class="${i == response.page} ?: active">Dummy</button>
kamaci
  • 72,915
  • 69
  • 228
  • 366

1 Answers1

31

This works for me:

<th:block th:each="i: ${#numbers.sequence(0, response.count - 1)}">
    <button th:if="${response.page == i}" class="active">Dummy</button>
    <button th:unless="${response.page == i}">Dummy</button>
</th:block>
Metroids
  • 18,999
  • 4
  • 41
  • 52
  • In my case instead of 'response.count' I use 'elements.size()' like this: 'th:each="i: ${#numbers.sequence(0, elements.size()- 1)}"'. Following this condition seems like the case when NO buttons are displayed is impossible. Minimum one button is displayed. – Vladislav Ashikhin Jun 08 '23 at 22:55