我正在尝试在我的应用程序(Seam/RichFaces)中显示购物车,并包含“从购物车中删除”<a4j:commandLink />
在每个商品旁边,将商品从购物车中删除。当我单击该链接时,它应该重新呈现购物车内容以显示该项目已被删除。但是,当我单击该链接时,什么也没有发生。在我的操作中,购物车由包含商品的 ArrayList 支持。我可以在我的操作中看到该调用,因此我知道该项目已被删除 - 并且,如果我刷新页面,我会看到它已被删除。我在下面的代码中是否做错了什么,导致页面的这一部分无法正确重新呈现?
UPDATE:似乎它会正确重新渲染,但并非在所有情况下都如此。如果我的购物车中有超过 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>
解决了。我将有问题的 JSF 代码封装在<a4j:outputPanel ajaxRendered="true" />
一切都开始按预期进行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)