4
我试图在我的应用程序(Seam/RichFaces)中显示一个购物车,并在每个项目旁边包含一个“从购物车中删除”<a4j:commandLink />
以从购物车中删除该项目。当我点击链接时,它应该重新展示购物车内容以显示该物品已被移除。但是,当我点击链接时,没有任何反应。购物车由包含项目的操作中的ArrayList支持。我可以在我的动作中看到呼叫,所以我知道该项目已被删除 - 并且,如果我刷新页面,我看到它已被删除。我在下面的代码中做错了什么,导致页面的这一部分不能正确地重新渲染?<a4j:commandLink> Not Rerendering
更新:看起来好像它会正常放回,但不是在所有情况下。如果我的购物车中有超过1件商品,并且删除了最近添加的商品,则它会正确退货。如果我只在购物车中有一件商品,或者我尝试删除最近添加的商品,则无法兑换任何商品。有关这里发生了什么的任何想法?
<s:div styleClass="cart_bag" rendered="#{identity.loggedIn}">
<h6 class="head"><h:outputText value="Your Shopping Cart" /><a:status
forceId="true" id="shoppingCartStatus">
<f:facet name="start">
<h:graphicImage value="/images/ajax-loader.gif" styleClass="right" />
</f:facet>
</a:status></h6>
<s:div id="shoppingCartItems">
<s:fragment
rendered="#{shoppingCart.shoppingCartContents.size() le 0}">
<p><s:span styleClass="bold">
<h:outputText style="color: #FFF;"
value="Your shopping cart is empty" />
<br />
<br />
<br />
</s:span></p>
</s:fragment>
<s:fragment
rendered="#{shoppingCart.shoppingCartContents.size() gt 0}">
<h:form>
<ul>
<ui:repeat value="#{shoppingCart.shoppingCartContents}"
var="cartItem">
<li><s:div styleClass="thumb">
<a href="detail.html"><img src="../images/cart_thumb.gif"
alt="" /></a>
</s:div> <s:div styleClass="desc">
<s:link view="/index.xhtml" styleClass="bold"
value="#{cartItem.name}">
<f:param name="ctxid" value="#{cartItem.uniqueIdentifier}" />
</s:link>
<p><span class="bold">Unit Price:</span> $629</p>
</s:div><a:commandLink id="removeItemFromCartBtn"
action="#{shoppingCart.removeFromShoppingCart()}"
styleClass="cros" reRender="shoppingCartItems"
status="shoppingCartStatus">
<f:param name="ctxid" value="#{cartItem.uniqueIdentifier}" />
<h:graphicImage value="/images/remove.png" />
</a:commandLink></li>
</ui:repeat>
</ul>
</h:form>
</s:fragment>
</s:div>
<s:div styleClass="clear"></s:div>
<s:fragment
rendered="#{shoppingCart.shoppingCartContents.size() gt 0}">
<p class="total left bold"><h:outputText
value="Total: #{shoppingCart.shoppingCartTotal}" /></p>
<a href="cart.html" class="crtbtn right"><span>Checkout</span></a>
</s:fragment>
</s:div>