我在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。