0

プライムフェイスのピックリストを使用して 2 つのフィールド フィルターを使用できるかどうか疑問に思っていました。これを試しましたが、うまくいきません。名と名前でフィルタリングしたいのですが、それらは 2 つの異なるフィールドにあります。

<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 メソッドは 2 つのフィールドで簡単に設定できるので、すぐにできたはずです。提案をありがとう。

最初に機能しなかった理由は、ピックリスト フィルターの 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 ピックリストを拡張してカスタム コンポーネントを作成するか、2 つの個別の入力テキスト フィールドを作成して、javascript/jquery を使用して手動でフィルタリングを実行することもできます。

于 2013-07-05T21:45:57.690 に答える