Firefox 中的 Primefaces Autocomplete 未关闭选择
Primefaces Autocomplete in Firefox not closing on Selection
我将 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 测试)之外,这在所有浏览器中都可以正常工作。
当我 select 建议中的条目时,面板不会隐藏。关闭它的唯一方法是在外部单击。 firebug 控制台传送此错误:
ReferenceError: event is not defined
检查生成的 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 中获得一个工作版本?
否则我做错了什么,它不使用相同的功能?
这已作为 bug 报告给 primefaces,我向他们的代码发布了一个补丁来修复它。就我而言,我必须构建一个新的 jar 才能使其正常工作,而无需将数百个 f:ajax 元素全部转换为 p:ajax.
我将 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 测试)之外,这在所有浏览器中都可以正常工作。 当我 select 建议中的条目时,面板不会隐藏。关闭它的唯一方法是在外部单击。 firebug 控制台传送此错误:
ReferenceError: event is not defined
检查生成的 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 中获得一个工作版本? 否则我做错了什么,它不使用相同的功能?
这已作为 bug 报告给 primefaces,我向他们的代码发布了一个补丁来修复它。就我而言,我必须构建一个新的 jar 才能使其正常工作,而无需将数百个 f:ajax 元素全部转换为 p:ajax.