p:单击commandlink后ajax更新无法正常工作

时间:2013-07-23 14:24:51

标签: ajax jsf-2 primefaces commandlink

我有一个jsf页面,可以从客户端添加订单 一切正常,除非我单击commandLink以显示p:对话框以添加新客户端“reste”inputtext停止工作时的更新(即使我关闭p:对话框而不添加新客户端):

客户名单:

<strong>Client :</strong><
<p:autoComplete
   id="client"
   value="#{venteSolaireBean.client}"
   completeMethod="#{venteSolaireBean.autocompleteClient}"
   var="item"
   itemLabel="#{item.nom} #{item.prenom}"
   itemValue="#{item}"
   converter="#{venteSolaireBean.clientConverter}"
   dropdown="true" 
   scrollHeight="200" >
</p:autoComplete>

链接到p:对话框以添加新的Cleint:

<p:commandLink onclick="dlgClient.show()" immediate="true">
   <img src="images-main/add-icon.gif" border="0" alt="Add Client" class="img-action"/>
</p:commandLink>

三个p:带有ajax行为的inputtext项:

<strong>Montant :</strong>
<p:inputText value="#{venteSolaireBean.venteSolaire.montant}">
    <p:ajax event="keyup" update="reste" listener="#{venteSolaireBean.calcul}" />
</p:inputText>

<strong>Avance :</strong></td>
<p:inputText value="#{venteSolaireBean.venteSolaire.avance}">
    <p:ajax event="keyup" update="reste" listener="#{venteSolaireBean.calcul}" />
</p:inputText>

<strong>Reste :</strong></td>
<p:inputText id="reste" value="#{venteSolaireBean.venteSolaire.reste}">
</p:inputText>

使用侦听器执行的venteSolaireBean.calcul函数:

public void calcul() {
    venteSolaire.setReste(venteSolaire.getMontant() - venteSolaire.getAvance());
}

我通过记录calcul()函数进行检查,我确信它已被调用,并且赋予setReste()的值是正确的。

我不明白为什么inputtext没有更新 请帮忙。

1 个答案:

答案 0 :(得分:1)

我认为验证存在一些问题。由于immediate=true经常导致此类问题,并且您没有使用按钮上的任何主要功能来显示对话框,因此您应该使用纯HTML p:commandButton替换button以显示“添加客户端“-dialog。