< A4J:commandLink>不重新渲染 [英] <a4j:commandLink> Not Rerendering

查看:78
本文介绍了< A4J:commandLink>不重新渲染的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的应用程序(SEAM / RichFaces的)显示购物车,并收录了从购物车中删除< A4J:commandLink /> 旁边的每个项目从购物车中删除项目。当我点击链接它应该重新呈现在车的内容显示,该项目已被删除。然而,当我点击链接,没有任何反应。该购物车是由我的行动一个ArrayList包含的项目支持。我可以看到在我的行动电话,所以我知道该项目已被删除 - 而且,如果我刷新我看到它已被删除的页面。我做错了什么在下面,我的code导致这部分页面无法重新呈现正确?

更新:这好像它会重新解析正常,但不是在所有情况下。如果我有我的车超过1项,并删除任何项目,但最近添加的项目也重新呈现正常。如果我只有一个项目在购物车,或者我尝试删除最近添加的项目,它无法重新呈现任何内容。什么任何想法是怎么回事?

 < S:DIV的styleClass =cart_bag呈现=#{identity.loggedIn}>
        < H6类=头>< H:的outputText值=你的购物车/>< A:状态
            forceId =真正的ID =shoppingCartStatus>
            < F:面NAME =开始>
                < H:graphicImage的价值=/图片/ AJAX-loader.gif的styleClass =右/>
            < / F:面>
        < / A:状态>< / H6>
        &所述氏:格的id =shoppingCartItems>
            < S:片段
                渲染=#{shoppingCart.shoppingCartContents.size()乐0}>
                < P>< S:跨度的styleClass =黑体>
                    < H:的outputText风格=颜色:#FFF;
                        值=您的购物车是空的/>
                    < BR />
                    < BR />
                    < BR />
                < / S:跨度>< / P>
            &所述; /秒:片断>
            < S:片段
                渲染=#{shoppingCart.shoppingCartContents.size()GT 0}>
                < H:形式GT;
                    < UL>
                        < UI:重复值=#{shoppingCart.shoppingCartContents}
                            VAR =cartItem>
                            <李>< S:DIV的styleClass =拇指>
                                < A HREF =detail.html>< IMG SRC =../图像/ cart_thumb.gif
                                    中高音=/>&所述; / a取代;
                            < / S:DIV> < S:DIV的styleClass =降序>
                                < S:链接查看=/的index.xhtml的styleClass =黑体
                                    值=#{cartItem.name}>
                                    < F:参数名称=ctxid值=#{cartItem.uniqueIdentifier}/>
                                < / S:链接>
                                < P><跨度类=黑体>单价:LT; / SPAN> $ 629 LT; / P>
                            < / S:DIV>< A:commandLink ID =removeItemFromCartBtn
                                行动=#{shoppingCart.removeFromShoppingCart()}
                                的styleClass =CRO公司重新呈现=shoppingCartItems
                                状态=shoppingCartStatus>
                                < F:参数名称=ctxid值=#{cartItem.uniqueIdentifier}/>
                                < H:graphicImage的价值=/图片/ remove.png/>
                            < / A:commandLink>< /李>
                        < / UI:重复>
                    < / UL>
                < /小时:形式GT;
            &所述; /秒:片断>
        < / S:DIV>
        < S:DIV的styleClass =清除>< / S:DIV>
        < S:片段
            渲染=#{shoppingCart.shoppingCartContents.size()GT 0}>
            &其中,P类=左边总额大胆>< H:的outputText
                值=总计:#{shoppingCart.shoppingCartTotal}/>< / P>
            &所述; A HREF =cart.html类=crtbtn右>&其中;跨度>结帐&所述; /跨度>&所述; / a取代;
        &所述; /秒:片断>
    < / S:DIV>
 

解决方案

解决。我裹有问题的JSF code在< A4J:outputPanel ajaxRendered =真/> ,一切都开始按预期工作

I'm trying to display a shopping cart in my application (Seam/RichFaces), and have included a "remove from cart" <a4j:commandLink /> next to each item to remove the item from the cart. When I click the link it is supposed to rerender the cart contents to show that the item has been removed. However, when I click the link, nothing happens. The cart is backed by an ArrayList in my action that contains the items. I can see the call in my action, so I know the item has been removed -- and, if I refresh the page I see it has been removed. Am I doing something wrong in my code below that is causing this section of the page not to rerender properly?

UPDATE: It seems as though it will rerender properly, but not in all circumstances. If I've got more than 1 item in my cart and remove any item but the most recently added item it rerenders properly. If I only have one item in the cart, or I try and remove the most recently added item, it fails to rerender anything. Any thoughts on what's going on here??

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

解决方案

Solved. I wrapped the offending JSF code in a <a4j:outputPanel ajaxRendered="true" /> and everything began working as expected.

这篇关于&LT; A4J:commandLink&GT;不重新渲染的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆