ADOBE CQ5 JCR - 如何使用节点属性对查询构建器结果进行排序/排序

时间:2014-02-10 12:03:03

标签: java cq5 jcr aem crx

以下是java编码部分,然后将结果填充到.csv文件中。但是,我似乎没有正确的订购部分(下面的代码段中的最后一行)。

Map<String, String> map = new HashMap<String, String>();
map.put("path", "/etc/crx-db/form-data/career");
map.put("type", "nt:unstructured");
map.put("p.limit", "-1");
map.put("daterange.property", "created");
map.put("daterange.lowerBound", from);
map.put("daterange.lowerOperation", ">=");
map.put("daterange.upperOperation", "<=");
map.put("daterange.upperBound", to);
map.put("orderby", "created"); //<--here

在crx repositry中提供( / etc / crx-db / form-data / career ),我有节点: data1,data2,data3 ... 然后,对于每个节点,有一个属性 - 名称:已创建 |键入:日期 |价值: 2014-01-28T23:21:15.029 + 08:00 (例如) 但是我在 .csv 中的结果不正确,如(第1行到第5行):

  • 2014-01-28T23:21:15.029 + 08:00
  • 2014-01-28T23:48:12.219 + 08:00
  • 2014-02-10T18:44:38.914 + 08:00&lt; - unsorted
  • 2014-02-10T18:43:32.426 + 08:00&lt; - unsorted
  • 2014-02-10T18:46:53.319 + 08:00

非常确定我的代码没有运行。关于如何调整我的java代码以进行排序的任何想法?与返回已排序的data1,data2,data3 ... 一样,基于属性已创建。感谢。

1 个答案:

答案 0 :(得分:5)

你快到了。它可以如下完成。

map.put("orderby", "@created"); 
map.put("orderby.sort", "desc"); // in case you want it descending

如果您需要检查子节点中的属性,可以提供orderby值的相对路径。例如,如果您正在搜索dam:Asset并希望根据其元数据的jcr:lastModified属性对它们进行排序,那么您的查询将与此类似。

map.put("path", "/content/dam/geometrixx");
map.put("type", "dam:Asset");
map.put("orderby","@jcr:content/metadata/jcr:lastModified");

如需进一步学习,请参阅this