Jsf p:p:dataTable中的列;sortBy“;在第一次单击时下降

Jsf p:p:dataTable中的列;sortBy“;在第一次单击时下降,jsf,primefaces,datatable,Jsf,Primefaces,Datatable,中的的sortBy属性允许用户在每次单击时按升序或降序对列进行排序,是否仍可以在第一次单击列标题时按降序对列进行排序。它默认为升序 <p:column sortBy="#{bean.col1Value}" headerText="Col Header"> #{bean.col1Value} </p:column> #{bean.col1Value} 是否有可能覆盖此的默认设置?我认为您可以使用属性sort函数。我引用Primefaces 5.1用户指南第153

中的
sortBy
属性允许用户在每次单击时按升序或降序对列进行排序,是否仍可以在第一次单击列标题时按降序对列进行排序。它默认为升序

<p:column sortBy="#{bean.col1Value}" headerText="Col Header">
   #{bean.col1Value}
</p:column>

#{bean.col1Value}

是否有可能覆盖此
的默认设置?

我认为您可以使用属性sort函数。我引用Primefaces 5.1用户指南第153-154页

而不是使用默认的排序算法,该算法使用java 比较器,您也可以插入自己的排序方法

然后在你的html文件中

<p:dataTable var="car" value="#{carBean.cars}">
<p:column sortBy="#{car.model}" sortFunction="#{carBean.sortByModel}"
headerText="Model">
<h:outputText value="#{car.model}" />
</p:column>
...more columns
</p:dataTable>

…更多专栏

您需要使用sortFunction=“#{testBean.customSort}”并可以自定义排序。

因此您可以有效地“反转”排序算法中的排序。。。但是你有没有检查一下列上的图标是怎么做的?很可能它们与排序不匹配。我没有尝试这个,那么sortByModel函数将返回什么?@rashidnk:这是一个java“比较器”:@rashidnk如前面的评论所述,它应该返回自定义排序算法以满足您的要求,即,在第一次单击时默认为降序排序。
<p:dataTable var="car" value="#{carBean.cars}">
<p:column sortBy="#{car.model}" sortFunction="#{carBean.sortByModel}"
headerText="Model">
<h:outputText value="#{car.model}" />
</p:column>
...more columns
</p:dataTable>