【发布时间】:2015-02-16 22:25:58
【问题描述】:
我想按默认列对表格进行排序。我在文档中找到了以下示例:
<p:dataTable var="car" value="#{carBean.cars}" sortBy="model">
<p:column sortBy="model" headerText=”Model”>
<h:outputText value="#{car.model}" />
</p:column>
<p:column sortBy="year" headerText="Year">
<h:outputText value="#{car.year}" />
</p:column>
...more columns
</p:dataTable>
这适用于静态列。默认情况下,它按“模型”列排序。但这如何与动态列 (p:columns) 一起使用?
如果我以同样的方式实现它:
<p:dataTable id="cars" var="car" value="#{dtColumnsView.cars}"
widgetVar="carsTable"
filteredValue="#{dtColumnsView.filteredCars}"
sortBy="#{car.model}">
<p:columns value="#{dtColumnsView.columns}" var="column"
columnIndexVar="colIndex" sortBy="#{car[column.property]}">
<f:facet name="header">
<h:outputText value="#{column.header}" />
</f:facet>
<h:outputText value="#{car[column.property]}" />
</p:columns>
</p:dataTable>
已正确排序,但未设置已排序列标题的样式!如果我使用sortBy="#{car[column.property]}",则所有列的样式都已设置并且排序不起作用。
我认为问题出在DataTableRenderer resolveDefaultSortIcon 方法中。属性tableSortByExpression 与columnSortByExpression 不同。
这是一个错误吗?任何帮助或解决方法?我正在使用 PrimeFaces 4.0。但我也用 5.1 测试过。
【问题讨论】:
标签: jsf jsf-2 primefaces