Использование 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();
}

Надеюсь это поможет.

Другие вопросы по тегам