【问题标题】:CQ5 QueryBuilder Search Not Working as Expected (when property NOT present)CQ5 QueryBuilder 搜索未按预期工作(当属性不存在时)
【发布时间】:2016-08-12 05:58:20
【问题描述】:

我正在尝试生成一个查询,该查询将返回不存在属性的路径下的所有页面。

实际上,我希望查询生成器查询将生成以下 xpath:/jcr:root/content/site/my/path//element(*, cq:Page)[not(jcr:content/task/@finished)]

对于 CQ 5.3,'exists' 属性似乎不存在(根据文档:http://docs.adobe.com/docs/en/cq/5-3/javadoc/com/day/cq/search/eval/JcrPropertyPredicateEvaluator.html),但是看起来我可以使用 'not',所以我尝试了以下两个示例,但是在查询调试器中都没有像我期望的那样工作:

1

path=/content/site/my/path
type=cq:Page
property=jcr:content/task/finished
property.operation=not

2

path=/content/site/my/path
type=cq:Page
property=jcr:content/task/finished
property.operation=not
property.value=true

我还看到了建议这些应该可以工作的页面,但我似乎看不到任何可以解决此问题的修补程序(假设它实际上不能正常工作)。

谁能提供解决方案或指出我哪里出错了?

使用 CQ 5.3,升级到 crx 2.2。

干杯

克里斯

【问题讨论】:

    标签: aem


    【解决方案1】:

    我有一些资源希望对你有所帮助:

    非空 SQL2(来自 6D 帖子):

    SELECT * FROM [cq:PageContent] WHERE [jcr:title] IS NOT NULL
    

    这意味着您可以将其转换为 WHERE [jcr:title] IS NULL

    如果使用 QueryBuilder 谓词,则该属性通常不会存在(从节点中删除),如果它为 false。请使用 CRX-DE lite 手动验证您的情况并检查节点及其属性。如果该属性确实存在,但其值为 false,则:

    path=/content/site/my/path
    type=cq:Page
    property=@jcr:content/task/finished
    property.value=false
    

    【讨论】:

      【解决方案2】:

      对于任何仍在挣扎的人,这就是你的做法

      path=/content/site/my/path
      type=cq:Page
      property=jcr:content/task/finished
      property.operation=exists
      property.value=false
      

      【讨论】:

      • 就像我说的,exists 操作似乎在 5.3 版本中不存在。
      猜你喜欢
      • 2017-05-12
      • 2021-07-27
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      • 2020-04-26
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多