有没有办法在没有列表的情况下在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>
答案 0 :(得分:22)
如果您仍在寻找正确的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
不会给我预期的结果答案 1 :(得分:19)
您可以在每个块中使用特殊的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