リストなしでThymeleafでループを行う方法はありますか?
私は基本的にこのスニペットをThymeleafに変換したいと思います。
<jsp:useBean id="now" class="Java.util.Date" />
<fmt:formatDate var="year" value="${now}" pattern="yyyy" />
<c:forEach var="i" begin="0" end="99">
<form:option value="${year-i}" />
</c:forEach>
</form:select>
-更新-
これが自分のやりたいことに沿っていると判断しましたが、springEL構文についてはわかりません。
<option th:each="i : ${#numbers.sequence( 1, 100)}" th:value="#{ T(Java.util.Date).getYear() - $i }">1</option>
まだ正しいSpEL構文を探している場合のために、ここで私のために働いたものがあります:
<option th:each="i : ${#numbers.sequence( 1, 100)}"
th:value="${ (new org.joda.time.DateTime()).getYear() - i }"
th:text="${ (new org.joda.time.DateTime()).getYear() - i }">1</option>
お知らせ:
th:text
を追加しました。Java.util.Date
は、望ましい結果をもたらさないためです。Java.util.Date and getYear() に関するこのディスカッションを読んでください
各ブロック内で特別なthymleaf反復変数を使用できます。この特別な変数名は、キーワード'Stat'
と連結した要素変数の名前です(例:elt -> eltStat
)この変数は、反復に関連する多くの情報を提供します。
要素変数の後にこの変数名を指定することもできます。例えば:
<tr th:each="prod,iterStat : ${prods}" th:class="${iterStat.odd}? 'odd'">
<td th:text="${prod.name}">Onions</td>
<td th:text="${prod.price}">2.41</td>
<td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
</tr>
以下の公式ドキュメントの詳細:
http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#keeping-iteration-status