如何在<c:foreach>标记内使用EL更新<c:set>标记中的值</c:foreach> </c:set>

时间:2012-07-31 07:19:05

标签: java jsp jstl el

我有list,其中包含一些对象。对象具有hours字段。

<c:foreach>我正在迭代列表并获取对象。

现在我想总结hours变量中所有迭代对象的totalHours字段。

我的代码:

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

我试过这个,但它给了我以下错误:

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

1 个答案:

答案 0 :(得分:23)

在Java中,它看起来像这样:

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

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