2013-07-05 30 views
0

我想知道是否有可能有一个两个字段过滤器与选择列表的选择。 我试过这个,但它不工作。我想过滤姓和名,但他们在两个不同的领域。PrimeFaces PickList:两个字符串字段过滤器

<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> 

感谢

回答

-1

这是不可能的默认组件。然而可以创建自定义过滤器(例如,从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的。

+0

文档中是否有错误?原因在于,picklist有两个filterMatchMode属性,它似乎是错误的。也许第二个是filterFunction?用这种方法,没有错误,但过滤功能从未被解雇。 –

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