2013-04-09 17 views
14

Czy istnieje sposób na wykonanie pętli w Thymeleaf bez listy?Liczniki w pętlach w Thymeleaf

Chciałbym zasadniczo przekonwertować ten fragment do 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> 

- Update -

Zdecydowałem to wzdłuż linii jak chcę to zrobić, ale nie jestem pewien co do składni springEL:

<option th:each="i : ${#numbers.sequence(1, 100)}" th:value="#{ T(java.util.Date).getYear() - $i }">1</option> 

Odpowiedz

17

W przypadku, gdy wciąż poszukuje właściwej składni Spel, oto co pracował dla mnie:

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

Wskazówka:

  • dodany th:text ustawić tekst opcji.
  • wykorzystywane Joda-Time zamiast jak java.util.Date nie da mi pożądany efekt

Przeczytaj tę dyskusję na java.util.Date and getYear()

17

Można użyć specjalnej zmiennej thymleaf iteracji wewnątrz każdego bloku. Ta specjalna nazwa zmiennej jest nazwą zmiennej elementu połączonej ze słowem kluczowym 'Stat' (ex: elt -> eltStat) Ta zmienna zawiera wiele informacji związanych z iteracją. Możesz także ustawić tę nazwę zmiennej, podając nazwę za zmienną elementu. Przykład:

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

Więcej informacji w dokumentacji urzędowej poniżej:

http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#keeping-iteration-status

+1

To jest znacznie czystsze niż akceptowanych odpowiedź. +1 –

+1

@PriiduNeemre "_To jest o wiele czystsze niż zaakceptowana odpowiedź_". Ale pytanie wyraźnie mówi, że aby zachować licznik iteracji bez listy. W powyższym kodzie '$ {prods}' jest listą. – Lucky