如何自定义 SelectOneMenu 的过滤功能
How can I customize the filter function for SelectOneMenu
我试图在 Primefaces 文档中查找,但我没有找到如何自定义 SelectOneMenu 的过滤器功能。
我加filterMatchMode="custom" filterFunction="#{mainRandevuBean.ilFilter()}"
但是不知道bean怎么写filterFunction
.
过滤器是一个 javascript(客户端)函数。一切都在 PrimeFaces documentation 中,您应该始终首先、仔细、彻底地研究它。
所以使用filterFunction="myFilter"
并创建一个 javascript 函数,例如
function myFilter(itemLabel, filterValue) {
// return true if this label matches, false otherwise
}
我用自动完成组件解决了这个问题。带有 dropdown="true" 属性 的 Primefaces 自动完成组件就像一个菜单一样工作。
作为旁注:primefaces 文档没有在语义上说明参数。它也没有提到标签的来源(事实上,文档提到的 "the item value" 不是很清楚)。
事实上,我使用 JavaScript 函数对此进行了调试,以便找出默认提供的标签。
function filterList(label, filter){
alert("label="+label+" and filter="+filter);
return false;
}
起初我以为它会像为每个列表项生成的 HTML 中的文本一样。但是在调试它时,我看到警告说标签类似于 my.package.SomeValueObject@123456(显然是列表中每个项目上的 Java 对象 toString)。
您需要在 selectManyMenu 内的 selectItems 上定义 itemLabel 属性 以生成标准过滤机制使用的正确文本值。据我所知,这是必须将 itemLabel 放在那里的唯一原因。在解释令人困惑的过滤之前,在文档中指定了 itemLabel。
据我所知,itemValue 无论如何都默认为对象值,因此我认为文档中的内容是多余的。
itemValue="#{player}"
希望对大家有所帮助:.)
我试图在 Primefaces 文档中查找,但我没有找到如何自定义 SelectOneMenu 的过滤器功能。
我加filterMatchMode="custom" filterFunction="#{mainRandevuBean.ilFilter()}"
但是不知道bean怎么写filterFunction
.
过滤器是一个 javascript(客户端)函数。一切都在 PrimeFaces documentation 中,您应该始终首先、仔细、彻底地研究它。
所以使用filterFunction="myFilter"
并创建一个 javascript 函数,例如
function myFilter(itemLabel, filterValue) {
// return true if this label matches, false otherwise
}
我用自动完成组件解决了这个问题。带有 dropdown="true" 属性 的 Primefaces 自动完成组件就像一个菜单一样工作。
作为旁注:primefaces 文档没有在语义上说明参数。它也没有提到标签的来源(事实上,文档提到的 "the item value" 不是很清楚)。
事实上,我使用 JavaScript 函数对此进行了调试,以便找出默认提供的标签。
function filterList(label, filter){
alert("label="+label+" and filter="+filter);
return false;
}
起初我以为它会像为每个列表项生成的 HTML 中的文本一样。但是在调试它时,我看到警告说标签类似于 my.package.SomeValueObject@123456(显然是列表中每个项目上的 Java 对象 toString)。
您需要在 selectManyMenu 内的 selectItems 上定义 itemLabel 属性 以生成标准过滤机制使用的正确文本值。据我所知,这是必须将 itemLabel 放在那里的唯一原因。在解释令人困惑的过滤之前,在文档中指定了 itemLabel。
据我所知,itemValue 无论如何都默认为对象值,因此我认为文档中的内容是多余的。
itemValue="#{player}"
希望对大家有所帮助:.)