0

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>

在这种情况下,前面提到的方法multiSortMetafilters参数中可用的字段名称将是。load()country.countryName


我正在对国家名称(而不是国家 ID)进行排序和过滤。国家名称顺便在另一个表(表的父表state)中可用。在该表中,实际的列名是由其持久性实体类中country_name的名称映射的。countryName

因此,提供的实际字段名称country.countryName需要替换为countryName.

替换这个名称需要条件检查,同时迭代Map<String, String>和/或List<SortMeta>这很乏味,尤其是当有更多这样的嵌套属性时。

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

PS这是Primefaces 3.5。

4

0 回答 0