Использование currentNode с диалогом дизайна
Я делаю простое включение CQ, которое включает в себя мой компонент.
<cq:include path="banner" resourceType="generic/components/content/banner" />
Но вместо использования диалогового окна контента я использую диалоговое окно дизайна. Я понимаю, что все свойства диалогового окна дизайна хранятся в / etc / designs / default. Так что, если я пытаюсь получить доступ к текущему объекту узла IE, используйте:
<%= currentNode.getName() %>
Я получаю исключение нулевого указателя. С чего бы это? Нет ли еще узла для диалогов дизайна? В идеале я пытаюсь использовать:
<%= currentNode.getIdentifier() %>
Но обнаружил, что я не могу даже получить доступ к currentNode, он просто выбрасывает нулевой указатель. Любые советы по этому вопросу, есть ли другой путь, по которому мне нужно идти, чтобы получить currentNode через диалоги дизайна? Любая помощь очень ценится!
1 ответ
Объект currentNode содержит разрешенный узел JCR для запроса. Поскольку вы используете диалоговое окно разработки, вы сможете получить доступ к дизайну адресуемого ресурса с помощью объекта currentDesign. А для доступа к свойствам, хранящимся в диалоге дизайна, вы можете использовать объект currentStyle.
currentStyle.get("prop_name");
currentDesign.getId();
Обратитесь к Style api и Design api для получения информации о доступных методах.
Поскольку у нас есть объект currentStyle, мы можем получить из него путь к стилю, а затем использовать объект Session для получения узла по этому пути. После этого вы можете выполнить все операции над ним.
Session session = resourceResolver.adaptTo(Session.class);
if(session.nodeExists(currentStyle.getPath())) {
Node node = session.getNode(currentStyle.getPath());
node.getIdentifier();
}
Надеюсь это поможет.