2013-12-17 22 views
11

Come posso fare quanto segue (java):ciclo for in thymeleaf

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

in Thymeleaf?

Ho provato questo:

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

Il problema è che non è così preciso come il pezzo java di codice. Come fare questo?

+0

$ {# numbers.sequence (1, 81/20)} -> Che cos'è questo. Questo internamente dice che deve essere eseguito su questo intervallo OPPURE è qualcosa che stiamo citando esplicitamente da qualche parte –

risposta

4

Suppongo che ciò sia dovuto ai numeri che si stanno utilizzando. Per il tuo codice java, int i = 0; i < 81; i + = 20 ritornerò i = 0, i = 20, i = 40, i = 60 e i = 80

tuttavia il vostro codice seguente numbers.sequence (1, 81/20)} Se i ritorni gli interi da 1 a 4.05, essendo 1, 2, 3 e 4.

Il primo ciclo restituisce 5 risultati per i, pertanto viene eseguito 5 volte. il secondo restituisce solo 4 risultati, quindi esegue 4 volte. Suggerirei di eseguire la sequenza a partire da 0 per restituire 5 risultati come desiderato.

Se si desidera che il codice Java rispecchi il secondo codice, è necessario modificarlo in: int i = 1; i < 4.05; i + = 1

Per dirla semplicemente, si esegue attraverso un ciclo con numeri diversi, vi suggerisco di cambiare la seconda istruzione di partire da 0.

+0

Sapevo che, questo era solo un tentativo, voglio che il thymeleaf faccia lo stesso del codice Java. – user1275645

+0

quindi è possibile modificare il codice thymeleaf in 'numbers.sequence (0, 4)' – JaanRaadik

+0

il numero 81 è su 100, questo numero è in realtà un numero dal modello, l'ho appena digitato in hardcoded per la leggibilità – user1275645

3

uso iterStat parola chiave per scorrere. Esempio Se si dispone di una matrice di stringhe e si sta iterando la stessa cosa usando il diodo.

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

Aggiungere step al codice è abbastanza semplice.

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