0

我参与了一个 JSF 项目,并且正在尝试为购物车制作视图。用户的购物车可以包含存储在 cartBean 中的哈希映射(键 = id,值 = 数量)中的票。在 cart.xhtml 我尝试输出门票,在这里你可以看到代码:

<h:form>    
        <c:forEach var="tickets" items="#{cartBean.showTickets()}">

            <hr/>
            <div class="eight columns">
                <div class="two column count">
                    <h:outputText style="font-size:30px;" value="#{tickets.value}"/>
                </div>
                <div class="two columns eventimg">
                    <a href="event.xhtml"><img src="img/dummy/event2.jpg" /></a>
                </div>
                <div class="six columns eventinfo">
                    <h4><a href="event.xhtml">Party Hard! </a></h4>
                    <p>05. Nov 2012</p>
                    </div>
                <div class="two columns price">
                    <font style="font-size:30px;">35 &euro;</font>
                </div>
                <div class="eight columns">
                    <h:outputText value="#{tickets.key}"  escape="false"/>
                    <h:commandButton value="x" action="#{cartBean.removeFromCart(tickets.key)}"/>

                </div>
            </div>

        </c:forEach>
        </h:form>

在我尝试从购物车中删除一张票之前,这很好。如果我有两个不同的 id 键,它们会正确显示在购物车中。当我尝试删除 ID 为 1 的票时,只有 ID 为 2 的票仍保留在购物车中,这是正确的。但是,当我首先删除 id 2 时,它会在购物车中显示票 2,尽管它已从哈希图中删除。刷新站点后,它会正确显示 id 为 1 的票证,但那里出了什么问题?

请帮我!


我发现 forEach 每次都从 2 而不是实际 id 开始有问题

4

2 回答 2

0

经过大量的网络搜索后,我终于找到了解决方案。在此处输入链接描述, 您可以看到问题 1 的一些问题与我的类似。解决方案是使用,因此您必须将地图写入 Arraylist,然后迭代列表。这里的代码是如何完成的:

public List<Entry<String, Integer>> getTicketsList() {
        return new ArrayList(tickets.entrySet());}

顺便提一句。门票是我在你的 html 文件中的哈希映射,你必须使用<ui:repeat value="#{cartBean.ticketsList}" var="tickets"> cartBean 是我的 bean,ticketList 是我的 arrayList。希望你对某人有帮助,快乐修复 B)

于 2012-11-26T11:38:01.823 回答
0

我发现 forEach 每次都从 2 而不是实际 id 开始有问题

于 2012-11-23T16:25:34.673 回答