Liferay比较器不起作用

时间:2014-05-25 22:15:39

标签: sorting liferay article

我正在使用查找结构文章的方法:

List<JournalArticle> articles = JournalArticleLocalServiceUtil.getStructureArticles(groupId, "15566", 0, 10000, comparator);   

比较器是类的实例:

public class OrderByEventsStartDate extends OrderByComparator{  
public int compare(Object o1, Object o2){  
    System.out.println("comparator test");  
    return 1;  
}  
}  

邮件永远不会被打印,结果也没有排序......请帮忙吗?

1 个答案:

答案 0 :(得分:1)

  

结果未排序......

因为您总是返回1

现在要创建一个OrderByComparator,你需要做更多的事情。

如果你看一下不同持久性方法使用的source code as to how the OrderByComparator,你会有所了解。

另外,看看Liferay实施的一些比较器,可以了解您需要做什么:

  1. Journal Comparators - 您可以查看ArticleTitleComparator
  2. UserFirstNameComparator
  3. 关于在liferay中实现OrderByComparator的超短教程

    1. 您需要创建3个字段:
      1. public static final String ORDER_BY_ASC - 指定要对结果进行排序的字段。以递增的方式。
      2. public static final String ORDER_BY_DESC - 指定要对结果进行排序的字段。按降序排列。
      3. public static final String[] ORDER_BY_FIELDS - 指定排序所需的不同字段(请参阅多个字段的UserFirstNameComparator)。
    2. 在您要排序的字段
    3. 上实施compare方法
    4. 强制使用getOrderBy()方法 - 请参阅ArticleTitleComparator
    5. 强制使用getOrderByFields()方法 - 请参阅ArticleTitleComparator
    6. 强制使用isAscending()和[{1}}方法所需的compare方法来确定它是asc还是desc - 参考getOrderBy
    7.   

      永远不会打印消息

      因为您尚未实现这些方法,所以它会忽略您传递的ArticleTitleComparator。您可以查看正在使用的方法的源代码JournalArticleLocalServiceImpl#getStructureArticles

      希望这有帮助。