How to update value in <c: set> tag using EL inside <c: foreach> tag
I have a list that contains some objects. Objects have a hours field.
In <c:foreach> I repeat the list and retrieve the objects.
Now I want to sum the hours field of all iterated objects in the variable totalHours .
My code is:
<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> I tried to do this, but it gave me the following error:
javax.el.ELException: Failed to parse the expression [${attendance.Hours += attendance.Hours } +6
1 answer
In Java, it will look like this:
// before the loop: int totalHours = 0; for (Attendance attendance : list) { totalHours = totalHours + attendance.getHours(); } Do the same 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> +20