【问题标题】:Capturing primefaces <p:autoComplete> change event (detect emptying)捕获 primefaces <p:autoComplete> 更改事件(检测清空)
【发布时间】:2014-05-03 07:21:39
【问题描述】:

我有一个关于 Primefaces 自动完成的问题。现在我正在使用自动完成中所选值的属性值更新字段,如下所示:

这是在我的 xhtml 中:

<p:autoComplete
    value="#{trFitoModel.selectedProducte}"
    id="nomComercial"
    completeMethod="#{trFitoBacking.completeProducte}"
    var="producte" itemLabel="#{producte.nom}"
    itemValue="#{producte}" converter="#{ProducteFitoConverter}"
    forceSelection="true"
    onkeyup="this.value = this.value.toUpperCase();">
    <p:ajax event="itemSelect"
        listener="#{trFitoBacking.handleSelect}"
        update="text" global="false" />
    <f:validator validatorId="qea.validators.EmptyFieldValidator" />
    <f:attribute name="validationTitle" value=" NomComercial " />
</p:autoComplete>
</p:column>
<p:column>
    <h:outputLabel>#{msgI18N.trFito}</h:outputLabel>
    <h:outputText id="text"
        value="#{traFitoBacking.resgistre}">
    </h:outputText>
</p:column>    

这是我的支持 Bean:

 public void handleSelect(SelectEvent event) {
    ProducteFitosanitari p=(ProducteFitosanitari)event.getObject();
    setResgistre(Integer.toString(p.getNumRegistre()));
}

这可行,但现在我尝试在自动完成的值为空时使用空字符串更新 id 为“text”的 outputText。

如何捕捉p:autoComplete清空时触发的事件?

【问题讨论】:

    标签: jsf jsf-2 primefaces autocomplete


    【解决方案1】:

    Primefaces autoComplete 生成 2 个事件:“change”和“itemSelect”,用于更改其内容的 2 种方法:键入或从下拉列表中选择。所以你需要注册2个p:ajax监听器:

    <p:autoComplete ... >
        <p:ajax event="itemSelect" listener="#{bean.action}" process="@form"/> 
        <p:ajax event="change" listener="#{bean.action}" process="@form"/> 
    </p:autoComplete>    
    

    您还需要第二个服务器方法签名:

    public void action(AjaxBehaviorEvent event)
    

    用于捕获“更改”事件。

    您可以将onstart 属性与JavaScript 一起使用来代替event 来运行...您可以在Primefaces 用户指南的“AjaxBehavior”部分找到p:ajax 的更多选项。

    【讨论】:

    • 还有“itemUnselect”、“query”和“moreText”的事件
    • 这里提到的所有事件都不会对 PF 6.2 中的文本删除(清空)做出反应
    • @Betlista 请查看this answer 以获得可能的解决方案。
    • @ltlBeBoy 谢谢,我看到了那个问题(我那里很少有 cmets),我不记得 p:ajax 没有指定事件到底是什么问题,也许它只是没有被调用.. .
    • 我在半年后来到这里,&lt;p:ajax event="change" 似乎运行良好,不确定我之前的测试哪里出错了......“itemUnselect”仅对自动完成的multiple 选项有效。 ..
    猜你喜欢
    • 2013-08-30
    • 2013-09-13
    • 2015-09-25
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    相关资源
    最近更新 更多