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 のバグだと思います。

DB クエリで使用するには、ページング時に正しい並べ替えの詳細を 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 に答える