在<p:datatable>分页中,不使用dynamicColumns + lazy + sorting </p:datatable>

时间:2013-03-22 13:47:41

标签: sorting jsf-2 primefaces datatable pagination

我正在使用生成动态列的延迟加载数据表

这是我的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值,而是给我“属性”“

可以帮助我解决这个问题......

1 个答案:

答案 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