我正在使用生成动态列的延迟加载数据表
这是我的dataTable
<p:dataTable var="iterator" id="dataTable"
value="#{MyManagedBean.lazyModel}"
paginator="true" rows="20"
lazy="true">
<p:columns value="#{MyManagedBean.columns}" var="column"
columnIndexVar="colIndex"
sortBy="#{iterator[column.property]}"
filterBy="#{iterator[column.property]}">
<f:facet name="header">
#{column.header}
</f:facet>
#{iterator[column.property]}
</p:columns>
</p:dataTable>
这种作品完美无需分页。如果我分页,load()方法不给SortField值,而是给我“属性”“
可以帮助我解决这个问题......
答案 0 :(得分:1)
我相信这是一个Primefaces的错误。
我认为在分页时应将正确的排序细节传递给LazyDataModel.load(),以便在数据库查询中使用。
添加
|| (table.isLazy() && table.isPaginationRequest(context))
到org.primefaces.component.datatable.feature.SortFeature中的shouldDecode方法应解决此问题。
public boolean shouldDecode(FacesContext context, DataTable table) {
return isSortRequest(context, table) || (table.isLazy() && table.isPaginationRequest(context));
}
我创建了一个新问题: https://code.google.com/p/primefaces/issues/detail?id=7068