2012-07-31 14 views
6

Tengo list que contiene algunos objetos. Los objetos tienen un campo hours.Cómo actualizar el valor en la etiqueta <c:set> usando EL dentro de una etiqueta <c:foreach>

En el <c:foreach> estoy iterando la lista y buscando los objetos.

Ahora quiero resumir el campo hours de todos los objetos iterados en una variable totalHours.

Mi código:

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

yo estaba tratando de esto, pero me dio el siguiente error:

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

¿Desea establecer 'totalHours'? ¿A qué valor? –

Respuesta

20

En Java, se vería así:

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

Haga lo mismo en 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> 
Cuestiones relacionadas