CQ5 - узлы доступа слинга

Я новичок в этом, поэтому заранее прошу прощения. У меня настроен экземпляр CQ5, и я не могу понять, как получить доступ к определенным узлам. Допустим, у меня есть компонент с путем: / project / components / content / leftsidebar, но я хочу получить доступ к свойствам другого узла здесь: / content / dam / campaign

Я знаю, что метод properties.get работает, но только если вы находитесь внутри этого узла properties.get ("title", "placeholder");

Я полный новичок, поэтому, пожалуйста, разместите образцы кода.

Спасибо!


person Delmon Young    schedule 04.04.2013    source источник


Ответы (1)


Вы могли бы использовать ResourceResolver, чтобы получить ресурс, который вы ищете. Оттуда вы можете адаптировать его к ValueMap и прочитать его свойства:

ResourceResolver resourceResolver = slingRequest.getResourceResolver();
Resource campaignResource = resourceResolver.getResource("/content/dam/campaign");
ValueMap campaignProperties = campaignResource.adaptTo(ValueMap.class);
String title = campaignProperties.get("title", "placeholder");

Вы можете узнать больше о доступе к свойствам на Apache Слинг на сайте. Помните, что CQ5 скрыт под капотом, так что это отличный ресурс, и вы по-прежнему находитесь на уровне абстракции выше прямого доступа к JCR.

person anotherdave    schedule 04.04.2013
comment
Спасибо за ответ @anotherdave. Есть идеи, почему я получаю эту ошибку: ResourceResolver не может быть преобразован в тип, нужно ли мне включать дополнительный пакет? Извините, я новичок в этом. - person Delmon Young; 05.04.2013
comment
Вам необходимо импортировать интерфейс org.apache.sling.api.resource.ResourceResolver в свой скрипт. - person Bertrand Delacretaz; 05.04.2013
comment
Спасибо @bertrand за любую причину, по которой я получаю эту ошибку Дубликат локальной переменной resourceResolver - person Delmon Young; 05.04.2013
comment
Привет, @anotherdave, случайно не знаю, почему я получаю Дубликат локальной переменной resourceResolver, спасибо! - person Delmon Young; 06.04.2013
comment
@ Демон Янг. Я бы сказал, что, скорее всего, у вас есть ссылка на cq: defineObjects или sling: defineObjects в вашем скрипте или в том, который вы включаете. Они уже предоставляют переменную resourceResolver, поэтому вам не нужно ее объявлять. Подробнее здесь - dev.day .com / docs / en / cq / current / howto / - person anotherdave; 08.04.2013