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>

カートからチケットを1つ削除しようとするまでは、これで問題ありません。2つの異なるIDキーがある場合、それらはカートに正しく表示されます。ID 1のチケットを削除しようとすると、ID2のチケットのみがカートに残ります。これは正しいです。しかし、最初にid 2を削除すると、ハッシュマップから削除されているにもかかわらず、カートにチケット2が表示されます。サイトを更新すると、ID 1のチケットが正しく表示されますが、何が問題になっていますか?

私を助けてください!


発生する例外は、DB_PATHを初期化できなかったことを意味します。したがって、null後で初期化できます。DB_PATHを初期化するために使用する部分の1つがnullであると思います。おそらく、この部分のどこかにありますCoreService.class.getPackage().getName()

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ExceptionInInitializerError.htmlも参照してください。

4

2 に答える 2

0

forEach に何か問題があることがわかりました。実際の ID ではなく、毎回 2 から始まります。

于 2012-11-23T16:25:34.673 に答える
0

Webを集中的に検索した後、最終的に解決策を見つけました。ここにリンクの説明を入力してください ここに、問題 1 のいくつかの問題が私のものと似ていることがわかります。解決策は使用することです。そのため、マップを Arraylist に書き込んでから、リストを反復する必要があります。ここにコードがどのように行われるか:

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

ところで。チケットは、html ファイル内のハッシュ マップです<ui:repeat value="#{cartBean.ticketsList}" var="tickets"> 。それが誰かの役に立てば幸いです、幸せに修正してくださいB)

于 2012-11-26T11:38:01.823 に答える