Jsf 更改与Primefaces中的排序顺序和搜索筛选器关联的字段名
我在Primefaces中使用了Jsf 更改与Primefaces中的排序顺序和搜索筛选器关联的字段名,jsf,primefaces,Jsf,Primefaces,我在Primefaces中使用了LazyDataModel。因此,可以在LazyDataModel的重载load()方法中获得与排序顺序和搜索过滤器相关的字段以及其他参数 @Override public List<StateTable> load(int first, int pageSize, List<SortMeta> multiSortMeta, Map<String, String> filters) { } @覆盖 公共列表加载(int-fi
LazyDataModel
。因此,可以在LazyDataModel
的重载load()
方法中获得与排序顺序和搜索过滤器相关的字段以及其他参数
@Override
public List<StateTable> load(int first, int pageSize, List<SortMeta> multiSortMeta, Map<String, String> filters)
{
}
@覆盖
公共列表加载(int-first、int-pageSize、列表多端口元、映射过滤器)
{
}
所以,如果我有一个这样的专栏
<p:column
headerText="Country"
resizable="false"
sortBy="#{state.country.countryName}"
filterBy="#{state.country.countryName}"
filterMaxLength="45">
...
</p:column>
...
在这种情况下,前面提到的load()
方法的multiportmeta
和过滤器
参数中可用的字段名将是country.countryName
我正在按国家名称(而不是国家id)进行排序和筛选。另一个表(州的父表)中提供了国家名称。在该表中,实际的列名是
country\u name
,它由持久性实体类中的名称countryName
映射
因此,提供的实际字段名country.countryName
需要替换为countryName
替换此名称需要在迭代映射
和/或列表
时进行条件检查,这非常繁琐,尤其是当存在更多此类嵌套属性时
我正在寻找一种方法,以便在需要时将此名称精确地更改为所需的字段名称。Primefaces
是否在
或其他地方支持此类功能
另外,它是Primefaces 3.5。“因此,提供的实际字段名countryId.countryName需要替换为countryName。”我不理解原因。请详细说明。顺便说一下,看到“国家ID”也有国家名称是很奇怪的。
countryId
属性是否最好重命名为country
?和countryName
到name
?在DB模型中看到国家名称被复制也很奇怪。你不想在country表的ID上使用FK吗?@BalusC:对不起,countryId
实际上指的是你提到的country
。这些属性名是由IDE生成的,我没有费心修改它们,是的,state
表上有一个外键,它引用了country
表的主键。我正在对countryName
进行排序和筛选,该列表位于country
表中。因此,排序和筛选需要在WHERE
和/或ORDER BY
子句中使用子查询或与countryName
(而不是country.countryName
)的联接。Primefaces提供的字段名,country.countryName
不能用于JPA条件查询。字段名应为countryName
,而不是country.countryName
。