Слегка неявные объекты - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь реализовать свою собственную версию навигационного компонента 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 Ответ

0 голосов
/ 14 декабря 2018

Модель Navigation, реализованная в Базовых Компонентах WCM, возвращает список 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#Gettermethods. Списоквсе объекты, доступные в контексте AEM в HTL / Sightly, см .: https://helpx.adobe.com/experience-manager/htl/using/global-objects.html

...