0

我从 PrimeFaces 6.1 迁移到 10.0.0,现在我的项目中sortBy的每一个p:dataTable都不起作用。

我的一个例子p:dataTable

<p:dataTable widgetVar="truckListTable" id="truckListTable" var="truck" value="#{truckList.trucks}"
    sortBy="#{truck.code}" sortMode="single" filteredValue="#{truckList.filteredTrucks}" paginator="true"
    paginatorPosition="top" rows="20" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
    ...
    <p:column sortBy="#{truck.plate}" filterBy="#{truck.plate}" filterMatchMode="contains">
        <h:outputText value="#{truck.plate}" />
    </p:column>
    ...
</p:dataTable>

我在我的 bean 中定义truck了如下变量truckList

private List<Map> trucks;

public List<Map> getTrucks() {
    return trucks;
}

public void setTrucks(List<Map> trucks) {
    this.trucks = trucks;
}

我的问题是当我单击列标题时,表格行没有排序。

filterBy工作正常,但sortBy没有。我在哪里做错了?

4

2 回答 2

2

文档说明sortBy需要单个或一组SortMeta. 从 8 到 10 迁移指南中也提到了这一点。

所以,要么SortMeta从你的 bean 中提供一个,要么简单地添加sortOrderp:column“代码”中。

SortMeta可以像这样创建:

SortMeta.builder().field("code").order(SortOrder.ASCENDING).build();

也可以看看:

于 2021-05-20T11:03:07.217 回答
1

有同样的问题,这花了我几个小时。

偶然发现这个线程:https ://github.com/primefaces/primefaces/issues/7232#issuecomment-822529549

更改javax.faces.STATE_SAVING_METHODserver解决问题。

尝试在您的web.xml

  <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
  </context-param>
于 2021-10-25T16:20:39.370 回答