p:ajax更新在单击commandlink后不起作用
我有一个jsf页面,用于添加来自客户端的订单。p:ajax更新在单击commandlink后不起作用,ajax,jsf-2,primefaces,commandlink,Ajax,Jsf 2,Primefaces,Commandlink,我有一个jsf页面,用于添加来自客户端的订单。 除了单击commandLink显示p:对话框以添加新客户机,“reste”inputtext上的更新停止工作(即使我在不添加新客户机的情况下关闭p:对话框),所有操作都正常: 客户名单: <strong>Client :</strong>< <p:autoComplete id="client" value="#{venteSolaireBean.client}" completeMethod=
除了单击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>
我通过记录calcul()函数进行了检查,我确信它已被调用,并且给setReste()的值是正确的
我不明白为什么inputtext没有更新。请帮助。我认为验证存在一些问题。由于
immediate=true
通常会导致此类问题,并且您没有使用按钮上的任何primefaces功能来显示对话框,因此您应该将p:commandButton
替换为普通HTML按钮来显示“添加客户端”对话框。为什么要使用immediate=“true”
?跳过验证第一个表单,因为我使用了两个表单,一个用于“客户订单”,另一个用于“添加客户”对话框,但您没有使用显示对话框的按钮提交任何内容。实际上,你不需要p:commandButton
它也可以是一个普通的按钮,因为你没有用这个按钮做任何JSF特定的事情。哦,是的,最好的方法是最简单的,我非常关注JSF,我忘记了简单的html,谢谢你的提示。写一个答案,我会接受的,
<p:commandLink onclick="dlgClient.show()" immediate="true">
<img src="images-main/add-icon.gif" border="0" alt="Add Client" class="img-action"/>
</p:commandLink>
<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>
public void calcul() {
venteSolaire.setReste(venteSolaire.getMontant() - venteSolaire.getAvance());
}