0

我想知道是否可以有一个带有primefaces 选择列表的两个字段过滤器。我试过这个,但它不工作。我想过滤名字和名字,但它们位于两个不同的字段中。

<p:pickList value="#{bean.usersDualModel}" var="user" 
    itemValue="#{user}" itemLabel="#{user.firstname} #{user.name}"  
    converter="user" showSourceFilter="true" showTargetFilter="true" 
    filterMatchMode="contains" >

    <p:column>  
        <h:outputText value="#{user.firstname} #{user.name}" />  
    </p:column>

</p:pickList>

谢谢

4

2 回答 2

2

事实上,我认为这是可能的,因为它与我上面发布的代码一起工作。但是,Javascript 方法很容易设置两个字段,所以我可以快速完成。谢谢你的建议。

它第一次无法正常工作的原因是 Primefaces 中的选项列表过滤器存在一个错误,并且官方没有对其进行修补。无论我输入什么值,过滤器模式都保持在startsWith中。

所以我的选择列表仍然是

<p:pickList value="#{bean.usersDualModel}" var="user" 
    itemValue="#{user}" itemLabel="#{user.firstname} #{user.name}"  
    converter="user" showSourceFilter="true" showTargetFilter="true" 
    filterMatchMode="contains" > ...

并且知道有一个自定义补丁。这是报告的链接。

https://code.google.com/p/primefaces/issues/detail?id=5234
于 2013-07-08T08:08:51.413 回答
0

这对于默认组件是不可能的。但是,您可以创建自定义过滤器(示例取自 Primefaces 手册):

<p:pickList value="#{pickListBean.cities}" var="city" itemLabel="#{city}" 
    itemValue="#{city}" showSourceFilter="true" showTargetFilter="true
    filterMatchMode="custom" filterMatchMode="myfilter">
</p:pickList>

function myfilter(itemLabel, filterValue) {
//Filter for firstname or name
//return true or false
}

当然,您也可以通过扩展 primefaces 选择列表来创建自定义组件,或者创建两个单独的 inputtext 字段并使用 javascript/jquery 手动触发任何过滤。

于 2013-07-05T21:45:57.690 回答