web-dev-qa-db-fra.com

pour boucle dans thymeleaf

Comment puis-je faire ce qui suit (Java):

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

à Thymeleaf?

J'ai essayé ça:

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

Le problème est qu'il n'est pas aussi précis que le morceau de code Java. Comment faire?

14
user1275645

Je suppose que cela est dû aux chiffres que vous utilisez. Pour votre Java, int i = 0; i <81; i + = 20 renverra i = 0, i = 20, i = 40, i = 60 et i = 80

cependant, les numéros de code suivants.sequence (1, 81/20)} devraient renvoyer les entiers de 1 à 4,05, soit 1, 2, 3 et 4.

La première boucle renvoie 5 résultats pour i, donc s'exécute 5 fois. la seconde ne renvoie que 4 résultats, donc s'exécute 4 fois. Je suggère d'exécuter votre séquence à partir de 0 pour renvoyer 5 résultats comme vous le souhaitez.

Si vous vouliez que votre code Java pour refléter le deuxième code, vous devriez le changer en: int i = 1; i <4.05; i + = 1

Pour le dire simplement, vous parcourez une boucle avec des nombres différents, je suggère de changer la deuxième instruction pour commencer à partir de 0.

5
JaanRaadik

Ajouter une étape à votre code est assez simple.

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

utilisez iterStat mot clé pour itérer. Exemple Si vous avez un tableau de chaînes et que vous l'itérez en utilisant 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

La 1ère valeur est le début du comptage, la 2ème est la valeur maximale et la 3ème est la valeur incrémentale

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