2013-12-17 27 views
11

Wie kann ich die folgende (Java) tun:for-Schleife in thymeleaf

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

in Thymeleaf?

Ich habe dies versucht:

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

Das Problem ist, dass es nicht so genau wie das Java-Codestück ist. Wie macht man das?

+0

$ {# numbers.sequence (1, 81/20)} -> Was ist das? Weist das intern, dass es über diesen Bereich laufen soll ODER ist es etwas, das wir explizit erwähnen irgendwo –

Antwort

4

Ich gehe davon aus, dass dies aufgrund der Zahlen ist, die Sie verwenden. Für Ihren Java-Code int i = 0; i < 81; i + = 20 kehrt i = 0, i = 20, i = 40, i = 60 und i = 80

aber Ihren folgenden Code numbers.sequence (1, 81/20)} sollte die ganzen Zahlen zurückgibt von 1 bis 4.05, wobei 1, 2, 3 und 4 sind.

Die erste Schleife gibt 5 Ergebnisse für i zurück, läuft also 5 mal. die zweite gibt nur 4 Ergebnisse zurück, also läuft 4 mal. Ich würde vorschlagen, dass Sie Ihre Sequenz ab 0 starten, um 5 Ergebnisse wie gewünscht zurückzugeben. Wenn Sie möchten, dass Ihr Java-Code den zweiten Code spiegelt, sollten Sie ihn wie folgt ändern: int i = 1; i < 4.05; i + = 1

Um es einfach auszudrücken, Sie sind mit unterschiedlichen Zahlen durch eine Schleife ausgeführt wird, schlage ich vor, die Änderung der zweiten Aussage von 0.

+0

Ich wusste, dass dies nur ein Versuch war, ich möchte das Thymeleleaf genauso machen wie den Java-Code. – user1275645

+0

dann können Sie den Thymeleflex-Code zu 'numbers.sequence (0, 4)' ändern – JaanRaadik

+0

die Zahl 81 ist von 100, diese Zahl ist tatsächlich eine Nummer aus dem Modell, ich habe es gerade in hardcoded für Lesbarkeit eingegeben – user1275645

3

Verwendung iterStat Schlüsselwort beginnen zu iterieren. Beispiel Wenn Sie ein Array von String haben und Sie dasselbe mit thymeleaf wiederholen.

<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

Schritt zu Ihrem Code hinzufügen ist ziemlich einfach.

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