2012-07-31 4 views
6

Ich habe list, die einige Objekte enthält. Die Objekte haben ein hours Feld.Wie aktualisiert man den Wert in <c:set> Tag mit EL in einem <c:foreach> Tag

In der <c:foreach> bin ich die Liste iterieren und die Objekte holen.

Jetzt möchte ich das hours Feld aller wiederholten Objekte in einer totalHours Variable zusammenfassen.

Mein Code:

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

ich dies versuchte, aber es gab mir die folgende Fehlermeldung:

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

Möchten Sie 'totalHours' einstellen? Zu welchem ​​Wert? –

Antwort

20

In Java, es würde wie folgt aussehen:

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

Tun Sie das gleiche in 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>