日期:2014-05-16  浏览次数:20368 次

JSTL标签对于Map集合的遍历,以及值得累加有关问题

??? JSTL标签对于Map集合的遍历,以及值得累加问题
??? JSTL标签对于Map集合的遍历:

<c:forEach items="${shoppingCart}" var="map">
    <tr>
          <td>${map.key}</td>
          <td>${map.value.number }</td>
          <td>${map.value.price }</td>
     </tr>
</c:forEach>

?

??? shoppingCart表示JSP页面所获取的HashMap对象,map表示在JSP页面中指向该集合对象。
??? map.key是取HashMap的键值;
??? map.value取的是HashMap中的value值,在此处表示的是一个JavaBean对象;
??? map.value.number/price表示的是取该JavaBean的字段所对应的值。


??? JSTL标签对于集合的值得累加:

<tr>
    <c:set var="totalPrice" value="0"></c:set>
       <td colspan="3" align="right">
           <c:forEach items="${shoppingCart}" var="map">
              <c:set var="price" value="${map.value.price}"></c:set>
              <c:set var="totalPrice" value="${totalPrice+price}"></c:set>
            </c:forEach>
           合计:${totalPrice}
        </td>
 </tr>

??? 首先定义了一个变量totalPrice,

??? (<c:set var="totalPrice" value="0"></c:set> )

???? 在使用forEach中重复定义一次,使用EL表达式使值相加

???? (<c:set var="totalPrice" value="${totalPrice+price}"></c:set> )

,不要使用+=,否则会报错!