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>
そして、バッキングBeanメソッド:
Cart.java
private CartSummary cartSummary;
private List shippings
public void updateShippingMethod(){ .... }
CartSummary.java
private List<OrderItem> orderItems;
基本的な機能は次のとおりです。
- ドロップダウン選択の変更
- 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
リスナーのメソッドに変更はありません。どういうわけか、jsはトリガーされません。primefaces.js.jsfとjsf.js.jsfでデバッグしようとしました。しかし、ブレークポイントはヒットしませんでした。Primefaces3.4とGlassfishFaces2.1.4を使用しています
JSFはどのjsファイルをajax関数に使用しますか?JSFは「プレーン」jqueryと同じセレクターを使用していますよね?どのようにしてセレクターを見つけてイベントをキャプチャしますか?
ご提案ありがとうございます。