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