2013-12-16 4 views
4

У меня есть компонент, который должен извлекать свойства из другого компонента на той же странице.Получить форму узла currenPage в CQ5

Есть ли способ получить объект NODE объекта от currentPage?

У меня есть имя узла, который нужно извлечь из кода.

ответ

9

Предполагая, что нужный узел находится в Page/jcr:content/yournode:

Page объект имеет метод getContentResource(), который возвращает вам узел jcr:content ресурсов по умолчанию. Вы также можете использовать page.getContentResource("yournode") для получения определенного узла ниже jcr:content.

Если ваш узел по какой-либо причине является родным братом до jcr:content (это не должно быть btw), вы можете перебирать дочерние ресурсы ресурса с помощью resource.listChildren().

Помните, что это все Sling API, поэтому вы управляете ресурсами, а не узлами. Вы можете получить JCR-узел из ресурса, используя resource.adaptTo(Node.class)

+0

Спасибо ... это сработало! –

0

Я хотел бы добавить, что это можно решить более чистым способом, делегируя запрос сервлету при условии, что проблема, требующая решения, требует разделения проблем - отделить представление от логики контроллера. LINK EXPLAINING IN DETAIL HOW VALIDATION IS DONE USING SLING SERVLETS

Добавляет валидатор в форму, используя ниже логики, которая вызывает строп сервлет размещенного

var url = CQ.HTTP.addParameter(dialog.path + '.validator.json', 'value', value); 
    var result = CQ.HTTP.eval(url); 

and in the servlet we access the node and its parents using below logic 
    final Node currentNode = request.getResource().adaptTo(Node.class); 
    try { 
     final Node par = currentNode.getParent(); 

     final NodeIterator nodes = par.getNodes(); 

     // get all form names for the current paragraph system 
     while (nodes.hasNext()) { //and the business logic 
+0

ПОЖАЛУЙСТА, ПОДТВЕРЖДАЙТЕ РЕШЕНИЕ, ЕСЛИ ВЫ НАЙДЕТЕ ЭТО ПОМОЩЬ – user2019339

1

Обычно каждый класс Page содержит метод для извлечения узлов в пределах jcr:content это немного чище:

Node node = CurrentPage.getContentResource("COMPONENTNAME").adaptTo(Node.class); 

Разработчики должны проверить наличие ресурса, прежде чем адаптировать его к узлу.

Теперь, когда у нас есть узел, мы можем извлекать свойства с этого узла.

String title = node.getProperty("jcr:title").getString(); 

Таким образом вы можете получить любые свойства компонента.

 Смежные вопросы

  • Нет связанных вопросов^_^