web-dev-qa-db-ja.com

<c:foreach>タグ内のELを使用して<c:set>タグの値を更新する方法

いくつかのオブジェクトを含む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 }
8
Sanjay Verma

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>
24
JB Nizet