捕获 primefaces <p:autoComplete> 更改事件(检测清空)
Posted
技术标签:
【中文标题】捕获 primefaces <p:autoComplete> 更改事件(检测清空)【英文标题】:Capturing primefaces <p:autoComplete> change event (detect emptying) 【发布时间】: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
清空时触发的事件?
【问题讨论】:
【参考方案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 没有指定事件到底是什么问题,也许它只是没有被调用.. . 我在半年后来到这里,<p:ajax event="change"
似乎运行良好,不确定我之前的测试哪里出错了......“itemUnselect”仅对自动完成的multiple
选项有效。 ..以上是关于捕获 primefaces <p:autoComplete> 更改事件(检测清空)的主要内容,如果未能解决你的问题,请参考以下文章
未捕获的ReferenceError:$未定义JSF Primefaces(h:包含头部)
PrimeFaces上传组件中是否有取消按钮的bean事件?