0

我有一个 jsf 页面,可以添加来自客户的订单。
一切正常,除了当我单击 commandLink 以显示 p:dialog 以添加新客户端时,“reste”输入文本上的更新停止工作(即使我关闭 p:dialog 而不添加新客户端):

客户名单:

<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>

链接到 ap:dialog 以添加新的 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>

三个具有 ajax 行为的 p: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 没有更新。
请帮忙。

4

1 回答 1

1

我认为验证存在一些问题。由于immediate=true通常会导致此类问题,并且您没有在按钮上使用任何 primefaces 功能来显示对话框,因此您应该将其替换p:commandButton为纯 HTMLbutton以显示“添加客户端”对话框。

于 2013-07-24T08:07:40.150 回答