在ajax事件期间,Primefaces组件未被更新

时间:2018-06-06 02:20:12

标签: ajax validation primefaces jsf-2.2

我正在使用带有PrimeFaces 6.1的JSF 2.2,并且为了进行“可选”验证,每次p:inputNumber失去焦点时,ap:按钮都会更新,并且基于特定的验证方法呈现或不呈现:

<div class="ui-grid-col-2">
    <p:inputNumber id="quantidade" value="#{vendaMB.quantidadeItem}" decimalPlaces="1" minValue="0.0" onfocus="this.setSelectionRange(0, this.value.length)">
        <p:ajax event="blur" process="@this" update="btnImgQtdeUltrapassa"/>
    </p:inputNumber>
</div>
<div class="ui-grid-col-1">
    <p:button id="btnImgQtdeUltrapassa" title="Quantidade inserida ultrapassa quantidade em estoque" disabled="true" icon="fa fa-fw fa-warning" rendered="#{vendaMB.verificaQtdeEstoque()}" styleClass="btn-round"/>
</div>

奇怪的是,当我使用update="@form"时,更新发生得很完美,但是还有其他进程和方法无法在此表单更新上重新执行,因此,我无法使用此方法。有人可以帮我解决这个问题吗?

另外,我使用的是“p:button”,但实际上我只需要图标和类似于“title”属性的东西。如果您还可以建议我使用另一种标签或方法而不是这个“即兴图标”,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您无法对可能有条件呈现的项目执行“update =”。如果未渲染,则无法更新。 只需这样做:

<h:panelGroup id="updateme">
  <p:commandButton rendered="#{bean.condition}"/>
</h:panelGroup>

现在可以使用

<p:ajax update="updateme"/>