我已經閱讀過所以和其他地方有關我的問題。使用JSF ajax調用不正確
我明白我在做什麼是完全錯誤的。我的問題是,我不知道如何去做right,如果有人能幫助我,我會喜歡它。
目前我有什麼看起來是這樣的:
<ul class="unstyled">
<ui:repeat value="#{paymentDetailsBean.products}" var="product" varStatus="status">
<li>
<div>
<h:selectBooleanCheckbox value="#{product.initiallySelected}">
<f:ajax render="paymentDetailsForm:totalPriceText" listener="#{paymentDetailsBean.updateTotalPrice}"></f:ajax>
</h:selectBooleanCheckbox>
</div>
</li>
</ui:repeat>
</ul>
product.initiallySelected
是,我想更新,當用戶確認/取消選中的產品的布爾值。
我還使用了AJAX標籤重新呈現這樣的:
<h:outputText id="totalPriceText"><b>#{passengerDetailsBean.formatCurrency(paymentDetailsBean.totalPrice.toString())}</b></h:outputText>
基本上我想要的總價格OT進行更新,因爲選擇/取消選擇一個產品將使它上升或下降。我還使用了AJAX標籤(這是問題的癥結所在,很明顯)來調用後端此功能:
public void updateTotalPrice(AjaxBehaviorEvent event)
{
this.totalPrice = 0.0f;
for (Product product : this.getProducts())
{
if (product.getInitiallySelected())
{
this.totalPrice += product.getCurrencyAmountGroup().getAmount();
}
}
this.totalPrice += this.getTotalFaresAmount();
}
所有這些作品,但它是非常緩慢的,我知道這是因爲我不應該使用ajax標籤來做業務邏輯。我不知道這樣做的正確方法。任何人都可以幫我嗎?
你阿賈克斯行動將循環中的所有產品,即使你剛剛檢查/取消選中單這取決於複選框的當前選擇的產品和當前值增加/減少產品,這就是爲什麼它變得緩慢。你可以修改'updateTotalPrice'方法只計算所選產品而不是所有產品。 – ggDeGreat
@ggDeGreat請您詳細說明一下嗎?我不太明白。 – Skytiger