Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Thymeleaf - Как зациклить список по индексу

Автор вопроса: richersoonОтветов: 2

Как я могу зациклить по индексу?

Foo.java

public Foo {
    private List<String> tasks;
    ...
}

index.html

<p>Tasks:
    <span th:each="${index: #numbers.sequence(0, ${foo.tasks.length})}">
        <span th:text="${foo.tasks[index]}"></span>
    </span>
</p>

у меня ошибка синтаксического анализа

org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as each: "${index: #numbers.sequence(0,  ${student.tasks.length})}"
  • Зачем вам нужно использовать индекс, когда вы уже можете просто перебирать коллекцию? Jim Garrison 14.07.2016
  • В конце концов, я хочу преобразовать список в строку с разделителями-запятыми. Я хотел бы проверить, является ли элемент последним элементом. Поэтому я должен сначала выполнить цикл по индексу. richersoon 14.07.2016

javaeachthymeleafjakarta-ee

Ответы

Ответ 1 · рейтинг 102 · Jim Garrison

Thymeleaf th:each позволяет объявить переменную состояния итерации

<span th:each="task,iter : ${foo.tasks}">

Затем в цикле вы можете обратиться к iter.index и iter.size.

См. Учебное пособие: Использование Thymeleaf - 6.2 Сохранение статуса итерации.

Ответ 2 · рейтинг 37 · naXa

Thymeleaf всегда объявляет неявную переменную состояния итерации, если мы ее опускаем.

<span th:each="task : ${foo.tasks}">
    <span th:text="${taskStat.index} + ': ' + ${task.name}"></span>
</span>

Здесь имя переменной состояния - taskStat, которое представляет собой совокупность переменной task и суффикса Stat.

Затем в цикле мы можем обратиться к taskStat.index, taskStat.size, taskStat.count, taskStat.even и taskStat.odd, taskStat.first и taskStat.last.

Источник: Учебное пособие. Использование Thymeleaf - 6.2. Сохранение итерации статус

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы