Слегка неявные объекты

Я пытаюсь реализовать свою собственную версию навигационного компонента WCM, логику которого можно найти здесь, вместо этого добавив свою логику:

import java.util.*;
import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.api.PageFilter;

import com.adobe.cq.sightly.WCMUsePojo;

public class Navigation extends WCMUsePojo{
    private Iterator<Page> items;

    @Override
    public void activate() throws Exception {
        Page navRootPage = getCurrentPage().getAbsoluteParent(2);
        items = navRootPage.listChildren(new PageFilter());
    }
    public Iterator<Page> getItems() {
        return items;
    }
}

HTL, найденный здесь, идентичен.

Я могу перебирать первый уровень (на глубине 4) элементов навигации. Но цикл обрывается item.html на этой линии: <sly data-sly-test="${item.children.size > 0}" data-sly-call="${groupTemplate.group @ items = item.children}"></sly>

В частности, item.children не работает, даже если это неявные объекты Sling. Любые мысли о том, почему это ломается?

Заранее спасибо!

1 ответ

Решение

Navigation Модель, реализованная в Core WCM Components, возвращает список NavigationItem которые выставляют своих детей через getChildren метод. Это позволяет вам звонить из HTL/Sightly с item.children, Так как ваш use-object возвращает список WCM Page s, вам нужно использовать listChildren метод. Вы можете позвонить прямо из HTL/Sightly, используя item.listChildren,

В целом, для всех объектов вы можете вызвать средство получения свойств, используя стандартные соглашения JavaBeans, см. https://helpx.adobe.com/experience-manager/htl/using/use-api-java.html. Список всех объектов, доступных в контексте AEM в HTL/Sightly, см. По адресу: https://helpx.adobe.com/experience-manager/htl/using/global-objects.html

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