如何自定义PrimeFaces数据表列的排序

如何自定义PrimeFaces数据表列的排序,primefaces,primefaces-datatable,Primefaces,Primefaces Datatable,我试图在PrimeFaces数据表上实现一个排序函数。我已经创建了一个模型对象列表。表的排序顺序有问题。排序列包含整数和字符串值。当我应用默认的排序机制,比如sort={var.id}时,列表是基于ASCII顺序排序的。下面是排序结果的图像。我目前正在使用PrimeFacesV5.2.5 <p:column headerText="Code Type" sortBy="#{var.codeType}"> <h:outputText value="#{var.codeTy

我试图在PrimeFaces数据表上实现一个排序函数。我已经创建了一个模型对象列表。表的排序顺序有问题。排序列包含整数和字符串值。当我应用默认的排序机制,比如sort={var.id}时,列表是基于ASCII顺序排序的。下面是排序结果的图像。我目前正在使用PrimeFacesV5.2.5

<p:column headerText="Code Type" sortBy="#{var.codeType}">
    <h:outputText value="#{var.codeType}"/>
</p:column>

谁能指导我如何克服这个问题

这里有两个选项:

在p:列上使用sort函数 使用实现的类型 排序函数 创建一个函数,该函数包含两个对象,并以可比较的方式对它们进行比较:

public int sortByModel(Object o1, Object o2) {
    //return -1, 0 , 1 if o1 is less than, equal to or greater than o2
}
并在您的专栏中使用它:

<p:column sortBy="#{var.codeType}" sortFunction="#{yourBean.sortByModel}">
可比类型 为列使用自定义类型,并确保它实现了Comparable。这迫使您实现compareToYourCustomType o方法,您可以使用该方法按自己喜欢的方式进行排序

另见:


这里有两个选项:

在p:列上使用sort函数 使用实现的类型 排序函数 创建一个函数,该函数包含两个对象,并以可比较的方式对它们进行比较:

public int sortByModel(Object o1, Object o2) {
    //return -1, 0 , 1 if o1 is less than, equal to or greater than o2
}
并在您的专栏中使用它:

<p:column sortBy="#{var.codeType}" sortFunction="#{yourBean.sortByModel}">
可比类型 为列使用自定义类型,并确保它实现了Comparable。这迫使您实现compareToYourCustomType o方法,您可以使用该方法按自己喜欢的方式进行排序

另见:


第三个选项:确保“整数”也被转换成字符串。在模型中,我的意思是HMM。。我想我有一个比较器或者两个我将要重写的比较器:-在没有设置排序函数时感谢排序:第三个选项:确保“整数”也转换为字符串。在模型中,我的意思是HMM。。我想我有一个比较器或者两个我要重写的比较器:-当没有设置排序函数时感谢:你正在为1,2,3。。10, 11 .. 20 .. 100 .. Aaa,AAAB。。是吗?@Jasper:是的,你说得对。更新了我的答案。添加链接到你正在为1,2,3。。10, 11 .. 20 .. 100 .. Aaa,AAAB。。是吗?@Jasper:是的,你说得对。更新了我的答案。添加链接到