2016-02-28 98 views
1

在JSP:Struts2的地图迭代从会议

<s:if test="%{#session.cart==null}"> 
    &nbsp;&nbsp;Your cart is empty. 
</s:if> 
<s:else>  
<s:set var="cartlist" value="%{#session.cart}"/> 

<s:iterator value="#cartlist"> 
<s:iterator value="value" status="cart"> 

<s:property value="#cart.pid"/> 

</s:iterator> 
</s:iterator> 
</s:else> 

为什么这else部分不是迭代。我做错了什么。如果购物车为空,则if条件被正确评估。如果购物车不是空的,那么else零件被评估,但循环不迭代意味着它不显示任何东西。

在行动:

Map<Integer,Cart> map = new HashMap<Integer,Cart>(); 
map.put(map.size()+1,new Cart(pid,delivery,price,qty)); 
session.setAttribute("cart",map); 

回答

1
<s:if test="%{#session.cart==null}"> 
    &nbsp;&nbsp;Your cart is empty. 
</s:if> 
<s:else>  
<s:set var="cartlist" value="%{#session.cart}"/> 
    <!-- following iterator returns Map.Entry of the map--> 
    <s:iterator value="%{#carList}"> 
     <!-- This iterator loops through all the entries of the map --> 
     <s:iterator> 
      <s:property value="key"/> 
      <s:property value="value.pid"/> 
     </s:iterator> 
    </iterator> 
</s:else> 
0

你过于复杂了。这就够了:

<s:if test="%{#session.cart==null}"> 
    &nbsp;&nbsp;Your cart is empty. 
</s:if> 
<s:else>  
    <s:iterator value="%{#session.cart}"> 
     <s:property value="key"/> 
     <s:property value="value.pid"/> 
    </iterator> 
</s:else>