我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>
和/或List<SortMeta>
这很乏味,尤其是当有更多这样的嵌套属性时。
我正在寻找一种在需要时将此名称精确更改为所需字段名称的方法。是否在其他地方或其他地方Primefaces
支持此类功能?<p:column>
PS这是Primefaces 3.5。