首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jcr sql-2 get节点名

jcr sql-2 get节点名
EN

Stack Overflow用户
提问于 2018-05-07 20:09:42
回答 2查看 1.7K关注 0票数 2

我正在aem 6.3上工作,想得到页面名

从cq: ISDESCENDANTNODE("/content/Product/Silhouettes/Accessories/Bands/Headband")页面选择*

如果需要使用sql-2检索节点的名称(),如何实现?

EN

回答 2

Stack Overflow用户

发布于 2018-05-08 04:01:58

您可以这样指定列约束,如标题、节点名称等-

SELECT nodeSet.name, nodeset.title FROM [cq:Page] AS nodeSet WHERE ISDESCENDANTNODE("/content/Product/Silhouettes/Accessories/Bands/Headband")

注意: AEM(Tools -> Query)中的查询工具不会根据您提到的列列出查询结果,它只会列出节点路径。

您可以查看如何使用/etc/importers/bulkeditor.htmlAEM小提琴工具根据列约束可视化查询结果。

如果您想以编程方式实现这一点,您可以使用问题中提到的相同的查询,并使用javax.jcr.query.*javax.jcr.Node.* API从查询结果中检索几乎任何属性。本文这里应该帮助您通过编程实现这一点。

票数 0
EN

Stack Overflow用户

发布于 2018-05-08 07:25:43

使用ResourceResolver API执行并获取查询结果:

代码语言:javascript
复制
final Iterator<Resource> pagesIterator = resolver.findResources('<your_query_here>', javax.jcr.query.Query.JCR_SQL2);
while (pagesIterator.hasNext()) {
    final Resource pageResource = pagesIterator.next();
    LOG.info(pageResource.getName());
}

但是,请注意,如果您使用的版本高于CQ5.6,则应该使用页API

在这种情况下,listChildren(Filter<Page> filter, boolean deep)方法将完成这项工作。

如果要筛选某些类型的页面,则可以使用PageFilter参数。因此,如果页面查找算法没有额外的条件,则可以传递null或新的空对象。

布尔参数:如果false只返回直接子页面,如果true将列出给定页面的所有子代页。

因此,将为您提供相同结果的SQL查询的等效解决方案是:

Iterator<Page> rootPageIterator = rootPage.listChildren(null, true);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50221718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档