jcr sql-2 получить имя узла - PullRequest
0 голосов
/ 07 мая 2018

я работаю над aem 6.3 и хотел бы получить имя страницы

ВЫБРАТЬ * ОТ [cq: Page] ГДЕ ISDESCENDANTNODE ("/ content / Product / Silhouettes / Accessories / Bands / Headband")

Если мне нужно получить имя узла , используя sql-2, как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Используйте ResourceResolver API для выполнения и получения результатов запроса:

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());
}

Однако обратите внимание, что если вы используете любую версию выше CQ 5.6, вам следует использовать вместо Page API .

В этом случае метод listChildren(Filter<Page> filter, boolean deep) сделает работу.

Параметр PageFilter может использоваться, если вы хотите фильтровать страницы какого-либо типа. Поэтому, если для вашего алгоритма поиска страниц нет дополнительных критериев, вы можете передать пустой или новый пустой объект.

Логический параметр: если false, он возвращает только прямые дочерние страницы, и если true перечислит все страницы-потомки данной страницы.

Следовательно, эквивалентное решение SQL-запроса, обеспечивающее такие же конечные результаты, будет:

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

0 голосов
/ 08 мая 2018

Таким образом, вы можете указать ограничения столбцов, такие как заголовок, имя узла и т. Д. -

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

Примечание : инструмент запросов в AEM (Инструменты -> Запрос) не будет выводить результаты запроса в соответствии с упомянутыми вами столбцами, он будет только перечислять пути узлов.

Вы можете использовать инструмент /etc/importers/bulkeditor.html или AEM fiddle для визуализации результатов запроса на основе ограничений столбцов.


Если вы хотите достичь этого программным путем, вы можете использовать тот же запрос, который вы упомянули в своем вопросе, и использовать javax.jcr.query.* и javax.jcr.Node.* API для получения практически любого свойства из результата запроса. Эта статья здесь должна помочь вам достичь этого программно.

...