Для цикла в тимелеафе
Как я могу сделать следующее (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>