如何使用根路径获取所有子页面、大子页面的 url?
How to get url of all child,grand child pages using root path?
我有一个根页面的路径,我想检索根页面的所有子页面以及根页面的孙子和孙子页面。我的结构是这样的
rootPage
|
|
|---------childPage
|
|
|---------grandChildPage
|
|
|
|----------------------grandGrandChildPages
所以我想要所有这些页面的路径。我怎样才能得到这个?
目前我正在使用这个
adminSession = repository.loginAdministrative( repository.getDefaultWorkspace());
ResourceResolver resourceResolver = request.getResourceResolver();
PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
List<String>pageList = new ArrayList();
Page rootPage = pageManager.getPage("/content/abc/roi");
Iterator<Page> rootPageIterator = rootPage.listChildren();
while(rootPageIterator.hasNext())
{
Page childPage = rootPageIterator.next();
String path = childPage.getPath();
pageList.add(path);
}
但它只为我提供了根页面的子页面,如果我使用 rootPage.hasChild() 那么我必须传递我不能传递的字符串,因为我现在不知道页面的名称.是否有任何方法 returns 布尔值页面是否有子页面。我只想要根页面内所有页面的列表,其中包括根页面的 grandChild 和 grandgrandCHild。
有人可以帮忙吗?
从 AEM 5.6 开始,您可以使用 com.day.cq.wcm.api.Page
界面中提供的 listChildren(Filter<Page> filter, boolean deep)
方法。
这将接受一个 PageFilter 和一个布尔值作为参数。
如果要过滤无效和隐藏页面,可以使用 PageFilter。如果您希望列出所有页面,请为此参数传递 null
。
对于布尔深度,如果 false
它仅列出子页面,如果 true
将列出给定页面的所有后代。
因此,问题中的代码可以修改为
Iterator<Page> rootPageIterator = rootPage.listChildren(null, true);
或
Iterator<Page> rootPageIterator = rootPage.listChildren(new PageFilter(), true);
我有一个根页面的路径,我想检索根页面的所有子页面以及根页面的孙子和孙子页面。我的结构是这样的
rootPage
|
|
|---------childPage
|
|
|---------grandChildPage
|
|
|
|----------------------grandGrandChildPages
所以我想要所有这些页面的路径。我怎样才能得到这个? 目前我正在使用这个
adminSession = repository.loginAdministrative( repository.getDefaultWorkspace());
ResourceResolver resourceResolver = request.getResourceResolver();
PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
List<String>pageList = new ArrayList();
Page rootPage = pageManager.getPage("/content/abc/roi");
Iterator<Page> rootPageIterator = rootPage.listChildren();
while(rootPageIterator.hasNext())
{
Page childPage = rootPageIterator.next();
String path = childPage.getPath();
pageList.add(path);
}
但它只为我提供了根页面的子页面,如果我使用 rootPage.hasChild() 那么我必须传递我不能传递的字符串,因为我现在不知道页面的名称.是否有任何方法 returns 布尔值页面是否有子页面。我只想要根页面内所有页面的列表,其中包括根页面的 grandChild 和 grandgrandCHild。
有人可以帮忙吗?
从 AEM 5.6 开始,您可以使用 com.day.cq.wcm.api.Page
界面中提供的 listChildren(Filter<Page> filter, boolean deep)
方法。
这将接受一个 PageFilter 和一个布尔值作为参数。
如果要过滤无效和隐藏页面,可以使用 PageFilter。如果您希望列出所有页面,请为此参数传递 null
。
对于布尔深度,如果 false
它仅列出子页面,如果 true
将列出给定页面的所有后代。
因此,问题中的代码可以修改为
Iterator<Page> rootPageIterator = rootPage.listChildren(null, true);
或
Iterator<Page> rootPageIterator = rootPage.listChildren(new PageFilter(), true);