2012-07-31 3 views
6

Ho list che contiene alcuni oggetti. Gli oggetti hanno un campo hours.Come aggiornare il valore nel tag <c:set> utilizzando EL all'interno di un tag <c:foreach>

Nel <c:foreach> Sto iterando l'elenco e recuperando gli oggetti.

Ora voglio sommare il campo hours di tutti gli oggetti iterati in una variabile totalHours.

Il mio codice:

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

stavo cercando questo, ma mi ha dato il seguente errore:

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

Vuoi impostare 'totalHours'? A quale valore? –

risposta

20

In Java, sarebbe simile a questa:

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

Quindi fai lo stesso 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>