Firefox 中的 Primefaces 自动完成功能不会在选择时关闭

Primefaces Autocomplete in Firefox not closing on Selection

本文关键字:选择 功能 Primefaces 中的 成功 Firefox      更新时间:2023-09-26

我正在使用Primefaces 5.0.9和Wildlfy 8.1和JSF 2.1.2

我有一个自动完成定义如下:

<p:autoComplete label="CAT" id="CATEGORY" dropdown="true" value="#{UserDownloadFileBean.editUserFileCategory}" 
        completeMethod="#{UserDownloadFileBean.categoryAutoComplete}" converter="#{UserDownloadFileCategoryConverter}" forceSelection="true"
        var="item" itemLabel="#{item.name}" itemValue="#{item}" required="true" requiredMessage="Please choose a category!" >
    <f:ajax event="itemSelect" update=":UploadFileCategoryDialogForm" />
</p:autoComplete>

这适用于所有浏览器,除了 Firefox(使用 v32 和 v34 测试)。当我在建议中选择一个条目时,面板不会隐藏。关闭它的唯一方法是单击外部。Firebug 控制台出现此错误:

引用错误: 未定义事件

检查生成的javaScript代码,问题很明显:

function(){PrimeFaces.cw("AutoComplete","CATEGORY",{id:"createUserDownloadFileForm:CATEGORY",widgetVar:"CATEGORY",delay:300,deletionDelay:600,forceSelection:true,behaviors:{
            itemSelect:function(ext) {mojarra.ab('createUserDownloadFileForm:CATEGORY',event,'itemSelect',0,0,{'CLIENT_BEHAVIOR_RENDERING_MODE':'UNOBSTRUSIVE'})}}});});

变量事件不存在(我想其他浏览器无论如何都提供它?在 Showcase (Pf v5.1.7) 中,代码使用 Primefaces.ab 和 ext 代替:

$(function(){PrimeFaces.cw("AutoComplete","widget_j_idt88_event",{id:"j_idt88:event",widgetVar:"widget_j_idt88_event",delay:300,behaviors:{
            itemSelect:function(ext) {PrimeFaces.ab({s:'j_idt88:event',e:'itemSelect',p:'j_idt88:event',u:'j_idt88:msgs'},ext);}}});});
这是否在 5.0.9

之后的某个时间修复,如果是这样,有没有办法在 5.0.9 中获得工作版本?否则我可能做错了什么,它不使用相同的功能?

这已被报告为Primefaces的错误,我在他们的代码中发布了一个补丁来修复它。 就我而言,我必须构建一个新的jar才能使其工作,而无需将数百个f:ajax元素全部转换为p:ajax。