AEM查询生成器:实现PredicateEvaluator仅用于排序

时间:2016-04-21 15:29:32

标签: cq5 aem

我正在尝试实现PredicateEvaluator仅用于订购目的 - 不过滤。

所以我开始:

applicationWillTerminate

}

我在谓词中注册了:    query.registerPredicateEvaluator(“orderbytag”,new OrderByTagPredicate()); 并添加了地图:map.put(“orderbytag”,“xxx”);然后用于创建PredicateGroup。

我尝试通过在OrderByTagPredicate类的所有方法中添加断点来进行调试,但似乎方法“getOrderByComparator(...)”从未被调用过。

有任何线索吗?

2 个答案:

答案 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);