JSF: ajax не работает для вложенных данных

У меня есть список заказов ul, несколько элементов списка, и последний элемент списка содержит раскрывающийся список различных вариантов доставки.

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

И метод поддержки бобов:

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

CartSummary.java
private List<OrderItem> orderItems; 

Вот основные функции:

  1. Изменение выпадающего списка
  2. updateShippingMethod() будет запущен
  3. 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>

При соответствующей замене бобов бобы меняются:

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

CartSummary.java
private List<CartGroup> cartGroups; 

CartGroup.java
private List<OrderItem> orderItems
private List shippings

Метод в слушателе не имеет изменений. Каким-то образом не JS не срабатывает. Я пытался отлаживать в primefaces.js.jsf и jsf.js.jsf. Но никакие контрольные точки не были достигнуты. Я использую Primefaces 3.4 и Glassfish Faces 2.1.4

Какие файлы js использует JSF для функций ajax? JSF использует тот же селектор, что и "обычный" jquery, верно? Как он находит селектор и захватывает событие?

Большое спасибо за любые предложения.

0 ответов

Другие вопросы по тегам