2012-07-31 14 views
6

Mam list, który zawiera niektóre obiekty. Obiekty mają pole hours.Jak zaktualizować wartość w tagu <c:set> za pomocą EL wewnątrz znacznika <c:foreach>

W iteracji <c:foreach> I iteracji listę i pobierania obiektów.

Teraz chcę podsumować pole hours wszystkich iterowanych obiektów w zmiennej totalHours.

Mój kod:

<c:forEach var="attendance" items="${list }" varStatus="rowCounter1"> 
    <tr> 
    <td><c:out value="${rowCounter1.count}"></c:out></td> 
    <td><c:out value="${attendance.date }"></c:out></td> 
    <td><c:out value="${attendance.inTime }"></c:out></td> 
    <td><c:out value="${attendance.outTime }"></c:out></td> 
    <td><c:out value="${attendance.interval }"></c:out></td> 

    <c:set var="totalHours" value="${attendance.Hours += attendance.Hours }" 
      target="${attendance}"</c:set>          
    </tr> 
</c:forEach> 

Próbowałam, ale to dało mi następujący błąd:

javax.el.ELException: Failed to parse the expression [${attendance.Hours += attendance.Hours } 
+0

Czy chcesz ustawić "totalHours"? Do jakiej wartości? –

Odpowiedz

20

W Javie, to będzie wyglądać tak:

// before the loop: 
int totalHours = 0; 
for (Attendance attendance : list) { 
    totalHours = totalHours + attendance.getHours(); 
} 

Zrobić to samo w JSTL:

<c:set var="totalHours" value="${0}"/> 
<c:forEach var="attendance" items="${list }" varStatus="rowCounter1"> 
    ... 
    <c:set var="totalHours" value="${totalHours + attendance.hours}"/> 
</c:forEach> 
Powiązane problemy