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

在ajax事件期间未更新Primefaces组件,ajax,validation,primefaces,jsf-2.2,Ajax,Validation,Primefaces,Jsf 2.2,我在PrimeFaces 6.1中使用JSF 2.2,为了进行“可选”验证,每次p:inputNumber失去焦点时,都会更新一个p:按钮,并根据特定的验证方法呈现或不呈现该按钮: <div class="ui-grid-col-2"> <p:inputNumber id="quantidade" value="#{vendaMB.quantidadeItem}" decimalPlaces="1" minValue="0.0" onfocus="this.setSel

我在PrimeFaces 6.1中使用JSF 2.2,为了进行“可选”验证,每次p:inputNumber失去焦点时,都会更新一个p:按钮,并根据特定的验证方法呈现或不呈现该按钮:

<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”属性的东西。如果您也能建议我使用另一个标签或方法来代替这个“临时图标”,我将不胜感激。

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

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

现在你可以使用

<p:ajax update="updateme"/>

我总是觉得这种行为有点奇怪。有时,如果在它前面加一个冒号,比如
:btnimgqtdeultrapasa
,它就会起作用。祝你好运