sorting - Primefaces 8 上的 TableState.getMultiSortMeta()
问题描述
我正在从 Primefaces 版本 7 升级到版本 8。PrimeFaces 8 下的模型中不再有可用的getMultiSortMeta()
方法TableState
。有谁知道如何替换以下方法并使其在 PrimeFaces 8 中工作?
public void onSort(SortEvent event) {
List<SortMeta> sortMeta = ((DataTable)
event.getComponent()).getMultiSortMeta();
channelsViewConfig.setMultiSortMeta(sortMeta);
}
解决方案
在 Primefaces 8 中, sortMeta 不再是 a List
,而是用于Map<columnKey,sortMeta>
获取已排序的集合。这个集合是通过属性获得的,sortMeta
而不是使用sortBy
;
<p:dataTable id="resultedtable"
value="#{bean.member}" var="member"
styleClass="resultedTable" paginator="true"
paginatorPosition="bottom"
pageLinks="5"
rowsPerPageTemplate="5,10"
sortMode="multiple"
sortMeta="bean.preSortOrder">
<p:column id="column1" headerText="column1" sortBy="#{member.column1}">
<h:outputText value="#{member.column1}" />
</p:column>
<p:column id="column2" headerText="column2" sortBy="#{member.column2}">
<h:outputText value="#{member.column2}" />
</p:column>
集合的支持 bean getter 看起来像这样:
public Map<String, SortMeta> getPreSortOrder() {
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
DataTable datatable = (DataTable)
viewRoot.findComponent("resultedtable");
UIColumn sortColumn = datatable.getColumns().get(0); // Sortby - firstcolumn
String sortField = sortColumn.getClientId(); // SortField - firstcolumn
SortMeta sortMeta = new SortMeta(sortColumn.getColumnKey(),
sortField, SortOrder.ASCENDING, null
);
preSortOrder = new LinkedHashMap<String, SortMeta>();
preSortOrder.put(sortColumn.getColumnKey(), sortMeta);
return preSortOrder;
}
推荐阅读
- java - 如何禁用按钮以打开谷歌地图 - Google API android studio java
- python - 使用 NaN 获得熊猫系列模式的最快方法
- javascript - 将 HTML5 表单输入添加到服务器端文本文件
- python - 在条件python上停止程序
- c++ - 如果控制路径之一没有返回值怎么办?
- javascript - 如何从 ref ObjectId 传递项目?
- spring - 如何为 Spring Batch JUnit 5 测试的 Spring 任务成功加载 JobLauncherTestUtils 类
- excel-formula - 需要 SUMIFS 公式帮助进行复杂查询
- go - 如何使用反射动态构造结构切片
- r - Huxreg 输出不适合由 R Markdown/knitr 创建的 pdf