17

リストなしで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>
4

2 に答える 2

25

まだ正しい 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望ましい結果が得られないため、代わりに Joda-Time を使用しました

java.util.Date と getYear()に関するこのディスカッションを読んでください。

于 2013-05-18T22:54:56.133 に答える
22

各ブロック内で特別な 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#Keep-iteration-status

于 2013-05-21T12:35:42.900 に答える