2012-07-31 19 views
6

के अंदर ईएल का उपयोग करके टैग को अपडेट करने के लिए कैसे करें मेरे पास list है जिसमें कुछ ऑब्जेक्ट्स हैं। वस्तुओं में hours फ़ील्ड है।<c:set> में <c:foreach> टैग

<c:foreach> में मैं सूची को पुन: सक्रिय कर रहा हूं और वस्तुओं को ला रहा हूं।

अब मैं totalHours चर में सभी पुनरावृत्त वस्तुओं के hours फ़ील्ड को जोड़ना चाहता हूं।

मेरे कोड:

<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 } 
+0

क्या आप 'totalHours' सेट करना चाहते हैं? किस मूल्य के लिए? –

उत्तर

20

जावा में, यह इस तरह दिखेगा:

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

तो जेएसटीएल में ऐसा ही करें:

<c:set var="totalHours" value="${0}"/> 
<c:forEach var="attendance" items="${list }" varStatus="rowCounter1"> 
    ... 
    <c:set var="totalHours" value="${totalHours + attendance.hours}"/> 
</c:forEach>