web-dev-qa-db-ja.com

thymeleafのforループ

次の方法はありますか(Java):

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

thymeleafで?

私はこれを試しました:

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

問題は、Javaコードの一部ほど正確ではないことです。これを行う方法は?

14
user1275645

これはあなたが使用している数字によるものだと思います。 Javaコードの場合、int i = 0; i <81; i + = 20はi = 0、i = 20、i = 40、i = 60お​​よびi = 80を返します

ただし、次のコードnumbers.sequence(1、81/20)}は、1、4.0、5、1、2、3、4の整数を返します。

最初のループはiに対して5つの結果を返すため、5回実行されます。 2番目は4つの結果のみを返すため、4回実行されます。シーケンスを0から実行して、必要に応じて5つの結果を返すことをお勧めします。

Javaコードで2番目のコードをミラーリングしたい場合は、次のように変更する必要があります:int i = 1; i <4.05; i + = 1

簡単に言うと、異なる番号のループを実行しているため、2番目のステートメントを0から開始するように変更することをお勧めします。

5
JaanRaadik

コードにステップを追加するのはとても簡単です。

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

反復するにはiterStatキーワードを使用します。例文字列の配列があり、thymeleafを使用して同じことを繰り返している場合。

<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> 
11
sitakant

1番目の値はカウントの開始、2番目は最大値、3番目は増分値です

${#numbers.sequence( 1, 4, 1)}
1
user2274218