我正在尝试在Primeface数据表上实现多重排序。我们正在使用Primefaces v3.5。我已经在LazyLoadClass中创建了一个新的load方法,该方法采用SortMeta>参数列表。但是,在表格的初始加载中出现了问题。当调用load方法时,SortMeta>列表为空。我还尝试过不指定datatable的initial sortBy和sortOrder。在这两种情况下,结果都是相同的。鉴于我们有了这个新的SortMeta类来支持多重排序,我怀疑指定初始排序字段和顺序的方式也已经改变了。但是我找不到任何示例来指出区别。手册3.5没有提到任何差异。为什么我们会得到SortMeta>列表为空?有没有关于使用Lazyload进行多重排序的示例代码的提示?
<p:dataTable var="trans" value="#{archiveBean.transactionModel}" lazy="true" sortMode="multiple" sortBy="#{hubArchiveBean.preSortOrder}" >
并创建了 preSortOrder 作为private void buildSortOrder() { SortMeta sm1 = new SortMeta(); sm1.setSortField("resolvedDateTime"); m1.setSortOrder(SortOrder.DESCENDING); preSortOrder.add(sm1); }
但是由于 DataTableRenderer 中的 encodeColumnHeader 方法正在访问 UIColumn,如sortIcon = resolveDefaultSortIcon(columnSortByVe, meta.getColumn().getValueExpression("sortBy"), meta.getSortOrder().name());
,因此会抛出 NPE。 - Murali D