我已经阅读过所以和其他地方有关我的问题。使用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