2013-07-05 29 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