Для цикла в тимелеафе

Как я могу сделать следующее (java):

for(int i = 0; i < 81 ; i+=20){
   //Should loop through 5 times!
}

в тимелеафе?

Я пробовал это:

<option th:each="i : ${#numbers.sequence( 1, 81/20)}">
   <p th:text="${ i }"></p> <!-- THIS loops 4 times, instead of 5 -->
</option>

Проблема в том, что она не такая точная, как часть кода Java. Как это сделать?

Ответ 1

Я предполагаю, что это связано с числами, которые вы используете. Для вашего java-кода,   int я = 0; я < 81; я + = 20 будет возвращать я = 0, я = 20, я = 40, я = 60 и я = 80

однако ваш следующий код   numbers.sequence(1, 81/20)} должен возвращать целые числа от 1 до 4,05, являясь 1, 2, 3 и 4.

Первый цикл возвращает 5 результатов для i, поэтому выполняется 5 раз. второй возвращает только 4 результата, поэтому работает 4 раза. Я бы предложил запустить вашу последовательность, начиная с 0, чтобы вернуть 5 результатов по желанию.

Если вы хотите, чтобы ваш Java-код отображал второй код, вы должны изменить его на: int я = 1; я < 4,05; я + = 1

Проще говоря, вы используете цикл с разными числами, я предлагаю изменить второй оператор, чтобы начать с 0.

Ответ 2

Добавить шаг к вашему коду довольно просто.

#{numbers.sequence(0, 81, 20)}

Ответ 3

используйте ключевое слово iterStat для итерации. пример Если у вас есть массив строк, и вы повторяете то же самое с помощью тимелеафа.

<div th:each="str,iterStat : strings">
   <span th:text="${str}"/><!--This will print the index value-->
   <span th:text="${iterStat.index}"/><!--This will print the Index-->
</div>