1

我有一个生成动态列的延迟加载数据表

这是我的数据表

<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 值,而是给出“属性]”

谁能帮我解决这个问题...

4

1 回答 1

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

于 2014-06-17T08:59:48.303 回答