在Primefaces中更改与排序顺序和搜索过滤器关联的字段名称

时间:2013-05-26 21:34:53

标签: jsf primefaces

我在Primefaces中使用LazyDataModel。因此,可以在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>和/或List<SortMeta>时进行条件检查,这是繁琐的,特别是当有更多此类嵌套属性时。

我正在寻找一种方法,可以在需要时将此名称精确地更改为所需的字段名称。 Primefaces或其他地方<p:column>是否支持此类功能?

P.S。这是Primefaces 3.5。

0 个答案:

没有答案