过滤和排序时,Primefaces Datatable错误
我在primefaces上使用普通数据表,但同时使用sortBy和filterBy时出错: javax.faces.faces异常:启用选择时,数据模型必须实现org.primefaces.model.SelectableDataModel。 这是我的桌子的外观: 在第一幅图中,我们可以看到我是如何筛选表的,但如果使用排序,则会出现错误: 这是我的primefaces代码:过滤和排序时,Primefaces Datatable错误,primefaces,primefaces-datatable,Primefaces,Primefaces Datatable,我在primefaces上使用普通数据表,但同时使用sortBy和filterBy时出错: javax.faces.faces异常:启用选择时,数据模型必须实现org.primefaces.model.SelectableDataModel。 这是我的桌子的外观: 在第一幅图中,我们可以看到我是如何筛选表的,但如果使用排序,则会出现错误: 这是我的primefaces代码: <p:dataTable value="#{lastPositionReportController.lastP
<p:dataTable value="#{lastPositionReportController.lastPositionReportDtos}"
editable="true"
paginator="true"
paginatorPosition="bottom"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {Exporters}"
id="catalog_table"
selectionMode="single"
emptyMessage="Sin Registros por Mostrar"
var="lastPos"
rowKey="#{lastPos.gpsId}"
rows="20"
rowsPerPageTemplate="20,25,30"
widgetVar="datatable"
styleClass="tbl">
<f:facet name="{Exporters}">
<div style="float:right">
<h:commandLink immediate="true">
<p:graphicImage name="img/xl.png" width="24"/>
<pe:exporter type="xlsx" target="catalog_table"
postProcessor="#{lastPositionReportController.postProcessXLS}"
fileName="reporte_ultima_posicion"
facetBackground="#F88017"/>
</h:commandLink>
</div>
</f:facet>
<p:column headerText="Línea de Transporte" style="width: 10%;" sortBy="#{lastPos.transportLineName}"
filterBy="#{lastPos.transportLineName}" exportable="true"
filterMatchMode="contains">
<f:facet name="header">
Línea de Transporte
</f:facet>
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{lastPos.transportLineName}"/></f:facet>
<f:facet name="input">
<p:inputText value="#{lastPos.transportLineName}"></p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Número Económico" style="width: 10%;" sortBy="#{lastPos.economicNumber}"
filterBy="#{lastPos.economicNumber}" exportable="true"
filterMatchMode="contains">
<f:facet name="header">
Número Económico
</f:facet>
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{lastPos.economicNumber}"/></f:facet>
<f:facet name="input">
<p:inputText value="#{lastPos.economicNumber}"></p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="GPS ID" style="width: 13%;" sortBy="#{lastPos.gpsId}"
filterBy="#{lastPos.gpsId}" exportable="true"
filterMatchMode="contains">
<f:facet name="header">
GPS ID
</f:facet>
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{lastPos.gpsId}"/></f:facet>
<f:facet name="input">
<p:inputText value="#{lastPos.gpsId}"></p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
在我的控制器上,我只创建一个:
List LastPositionReportDto lastPositionReportDtos
并将lastPositionsReportDtos对象添加到列表中
filteredValue="#{lastPositionReportController.selectedLastPositionReportDtosList}"
selection="#{lastPositionReportController.selectedLastPositionReportDtos}"
发现需要将这两行添加到我的datatable中,一个list对象和一个normal对象,这修复了过滤器和排序的错误
<p:dataTable value="#{lastPositionReportController.lastPositionReportDtos}"
editable="true"
paginator="true"
paginatorPosition="bottom top"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {Exporters}"
id="catalog_table"
selectionMode="single"
emptyMessage="Sin Registros por Mostrar"
var="lastPos"
rowKey="#{lastPos.gpsId}"
rows="20"
filteredValue="#{lastPositionReportController.selectedLastPositionReportDtosList}"
selection="#{lastPositionReportController.selectedLastPositionReportDtos}"
rowsPerPageTemplate="20,25,30"
widgetVar="datatable"
styleClass="tbl">
<p:datatable>
LastPositionReportDTO的类型是什么?它需要修改。@JasperdeVries谢谢你的回复,我更新了我的问题以添加更多细节。当做
<p:dataTable value="#{lastPositionReportController.lastPositionReportDtos}"
editable="true"
paginator="true"
paginatorPosition="bottom top"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {Exporters}"
id="catalog_table"
selectionMode="single"
emptyMessage="Sin Registros por Mostrar"
var="lastPos"
rowKey="#{lastPos.gpsId}"
rows="20"
filteredValue="#{lastPositionReportController.selectedLastPositionReportDtosList}"
selection="#{lastPositionReportController.selectedLastPositionReportDtos}"
rowsPerPageTemplate="20,25,30"
widgetVar="datatable"
styleClass="tbl">
<p:datatable>