我正在尝试实现PredicateEvaluator仅用于订购目的 - 不过滤。
所以我开始:
applicationWillTerminate
}
我在谓词中注册了: query.registerPredicateEvaluator(“orderbytag”,new OrderByTagPredicate()); 并添加了地图:map.put(“orderbytag”,“xxx”);然后用于创建PredicateGroup。
我尝试通过在OrderByTagPredicate类的所有方法中添加断点来进行调试,但似乎方法“getOrderByComparator(...)”从未被调用过。
有任何线索吗?
答案 0 :(得分:2)
通过在地图中添加以下内容解决:
map.put("的OrderBy"" orderbytag&#34);
缺少orderby子句。添加此子句使AEM使用所谓的PredicateEvalutor排序方法来执行!
答案 1 :(得分:0)
当您只想按特定属性排序时,最简单的方法是在用于构建查询的PredicateGroup中包含一个排序谓词。这样,您甚至不必担心自定义评估程序,因为默认评估程序将为您处理它。
假设您已经创建了“predicateGroup”,并且想要按'indexName'升序排序,那么您可以这样做:
Predicate orderPredicate = new Predicate(Predicate.ORDER_BY);
orderPredicate.set(Predicate.ORDER_BY, "@" + indexName);
orderPredicate.set(Predicate.PARAM_SORT, Predicate.SORT_ASCENDING);
predicateGroup.add(orderPredicate);