具有 select 和可拖动行的 Primefaces dataTable,select 在重新排序行时失败

Primefaces dataTable with select and dragable rows, select fails when rows are reordered

我有一个 primefaces 数据表,它既可以 select-able(单个 selection)又可以拖动行。我还需要通过按钮 select 一行(除了能够 select 行本身)。我的查看代码是:

<p:dataTable id="itemTable" widgetVar="itemTable"
   var="item" draggableRows="true"
   value="#{routesModelBean.itemList}" selectionMode="single"
   selection="#{routesModelBean.selectedItem}"
   rowKey="#{item.id}" rowIndexVar="rowId">

<p:column style="width:32px;text-align: center">
    <p:commandButton icon="ui-icon-search"
        onclick="PF('itemTable').unselectAllRows();PF('itemTable').selectRow(#{rowId},false);" type="button">
    </p:commandButton>
</p:column>

问题似乎出在 "rowIndexVar"。例如,如果我的列表中有两个项目,并且我通过拖动来交换它们,那么单击一个项目的按钮将导致 selecting 另一个。

编辑:Primefaces 版本为 6.0

重新排序行时,您也应该更新 table。使用以下

<p:ajax event="rowReorder" listener="YOUR_LISTENER" update=":itemTable" />