私はLazyDataModel
Primefacesで使用しています。したがって、並べ替え順序と検索フィルターに関連付けられたフィールドは、他のパラメーターと共にオーバーロードされたload()
メソッドで取得できます。LazyDataModel<T>
@Override
public List<StateTable> load(int first, int pageSize, List<SortMeta> multiSortMeta, Map<String, String> filters)
{
}
したがって、次のような列があった場合、
<p:column
headerText="Country"
resizable="false"
sortBy="#{state.country.countryName}"
filterBy="#{state.country.countryName}"
filterMaxLength="45">
...
</p:column>
この場合、前述のメソッドのmultiSortMeta
およびfilters
パラメータで使用できるフィールド名は になります。load()
country.countryName
国名で並べ替えとフィルタリングを行っています(国IDではありません)。ちなみに国名は他のテーブル(テーブルの親テーブルstate
)で利用可能です。そのテーブルでは、実際の列名は永続エンティティ クラスcountry_name
の名前によってマップされます。countryName
したがって、指定された実際のフィールド名country.countryName
は に置き換える必要がありますcountryName
。
Map<String, String>
この名前を置き換えるには、 and/orを反復する際に条件付きチェックが必要ですList<SortMeta>
。これは、特にそのようなネストされたプロパティがさらにある場合に面倒です。
必要に応じて、この名前を目的のフィールド名に正確に変更する方法を探しています。そのような機能はどこかでPrimefaces
サポートされていますか?<p:column>
PS Primefaces 3.5です。