내 문제에 관해서 SO와 다른 곳에서 읽었습니다.JSF ajax 호출을 잘못 사용했습니다.
나는 내가하고있는 일이 완전히 잘못되었다는 것을 알고있다. 내 문제는 어떻게 해야할지 모르겠다. , 누군가가 나를 도울 수 있다면 나는 그것을 좋아할 것이다.
현재 내가 무엇을은 다음과 같습니다
<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
은 사용자 검사/제품을 선택하거나 선택 취소합니다 때 업데이트 할 부울 값입니다.
나는이를 다시 쓰게 아약스 태그를 사용하고 있습니다 :
<h:outputText id="totalPriceText"><b>#{passengerDetailsBean.formatCurrency(paymentDetailsBean.totalPrice.toString())}</b></h:outputText>
은 기본적으로 내가 총 금액이 업데이트 될 하다며 원하는, 선택하기 때문에/제품을 선택 해제하면 위로 또는 아래로 갈 것. 또한 아약스 태그를 사용하고 (그리고 문제가 분명히있다 곳이다) 백엔드에서이 함수를 호출하기 :
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 태그를 사용하여 비즈니스 로직을 수행하면 안됩니다. 나는 그것을하는 정확한 방법을 모른다. 아무도 나를 도울 수 없습니까?
귀하의 아약스 액션 것입니다 루프의 모든 제품도 U 단지 확인/선택 취소 한에와 증가 /이 체크 박스의 현재 선택한 제품과 현재의 값에 따라 감소 제품, 그게 왜 느린가. 'updateTotalPrice' 메소드를 수정하여 모든 제품이 아닌 선택된 제품을 계산할 수 있습니다. – ggDeGreat
@ggDeGreat 제발 좀 더 자세히 설명해 주시겠습니까? 나는 정말로 이해하지 못한다. – Skytiger