JSF:ajax不适用于嵌套数据列表

JSF:ajax不适用于嵌套数据列表,ajax,jsf,primefaces,nested-datalist,Ajax,Jsf,Primefaces,Nested Datalist,我有一个ul orderlist多个列表项,最后一个列表项包含不同装运选项的下拉列表 <ul class="shipping_group"> <p:dataList id="cartOrderItemList" rendered="#{ not empty cart.cartSummary.orderItems}" type="none" var="orderItem" value="#{cart.cartSummary.orderItems}">

我有一个ul orderlist多个列表项,最后一个列表项包含不同装运选项的下拉列表

<ul class="shipping_group">
    <p:dataList id="cartOrderItemList" rendered="#{ not empty cart.cartSummary.orderItems}"
        type="none" var="orderItem" value="#{cart.cartSummary.orderItems}">
    <li>
        <div class="item"></div>
        <div class="finishing"></div>
        <div class="qty"></div>
        <div class="item_subtotal"></div>
    </li>
    </p:dataList>
    <li>
        <div class="shipping_method">
            <p>These items will ship together. Choose Shipping Method:</p>
            <p:selectOneMenu styleClass="shipping_select" value="#{cart.cartSummary.shippingMethod}">  
                <f:selectItems value="#{cart.cartSummary.shippings}" var="rate" itemValue="#{rate.method}" itemLabel="#{rate.displayNameDesc}"/>  
                <p:ajax update="shippingMethodText shippingMethod2Text" listener="#{cart.updateShippingMethod}" />
            </p:selectOneMenu>
        </div>  
    </li>
</ul>   
  • 这些物品将一起装运。选择运输方式:

在我的代码中,我有这样的代码:

<span class="shipping">Total Shipping Cost: <strong>
    <h:outputText id="shippingMethodText" value="#{cart.cartSummary.shippingPrice}">
    <f:convertNumber currencySymbol="$" type="currency" />
    </h:outputText></strong>
</span>
总运费:

以及支持bean方法:

Cart.java
private CartSummary cartSummary;
private List shippings
public void updateShippingMethod(){ .... }

CartSummary.java
private List<OrderItem> orderItems; 
Cart.java
私人车摘要车摘要;
私人名单托运
public void updateShippingMethod(){..}
CartSummary.java
私人物品清单;
以下是基本功能:

  • 下拉选择更改
  • updateShippingMethod()将被激发
  • shippingMethodText将得到更新
  • 一切都好。直到…我用另一个数据列表嵌套了整个结构

    <!-- Cart Group -->
    <p:dataList id="cartGroupList" rendered="#{not empty cart.cartSummary.cartGroups}" type="none"
        var="group" value="#{cart.cartSummary.cartGroups}">
        <ul class="shipping_group">
            <p:dataList id="shipping_group" type="none" var="orderItem" value="#{group.orderItems}">
            <li>
                <div class="item"></div>
                <div class="finishing"></div>
                <div class="qty"></div>
                <div class="item_subtotal"></div>
            </li>
            </p:dataList>
            <li>
                <div class="shipping_method">
                    <p>These items will ship together. Choose Shipping Method:</p>
                    <p:selectOneMenu styleClass="shipping_select" value="#{cart.cartSummary.shippingMethod}">  
                        <f:selectItems value="#{cart.cartSummary.shippings}" var="rate" itemValue="#{rate.method}" itemLabel="#{rate.displayNameDesc}"/>  
                        <p:ajax update="shippingMethodText" listener="#{cart.updateShippingMethod}" />
                    </p:selectOneMenu>
                </div>  
            </li>
        </ul>
    </p:dataList>
    
    
    
    • 这些物品将一起装运。选择运输方式:

    随着相应的支持bean的更改:

    Cart.java
    private CartSummary cartSummary;
    public void updateShippingMethod(){ .... }
    
    CartSummary.java
    private List<CartGroup> cartGroups; 
    
    CartGroup.java
    private List<OrderItem> orderItems
    private List shippings
    
    Cart.java
    私人车摘要车摘要;
    public void updateShippingMethod(){..}
    cartssummary.java
    私有列表组;
    CartGroup.java
    私有列表订单项
    私人名单托运
    
    侦听器中的方法没有更改。不知怎的,没有js被触发。我尝试在primefaces.js.jsf和jsf.js.jsf中进行调试。但是没有断点被击中。我使用的是primefaces 3.4和glassfish faces 2.1.4

    JSF将哪些js文件用于ajax函数?JSF使用与“普通”jquery相同的选择器,对吗?它如何找到选择器并捕获事件

    非常感谢您的建议