从会话中JSP中的Struts2映射迭代

时间:2016-02-28 05:03:28

标签: java jsp struts2 hashmap struts-tags

在JSP中:

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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>