在AEM中,可以使用谓词@Child
来仅列出直接子节点。以下是一个包含代码示例的解决方法:
import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.api.PageManager;
import com.day.cq.wcm.api.PageFilter;
import javax.jcr.NodeIterator;
public class AemPredicateExample {
public void listDirectChildren(String parentPath) {
PageManager pageManager = slingRequest.getResourceResolver().adaptTo(PageManager.class);
Page parentPage = pageManager.getPage(parentPath);
if (parentPage != null) {
NodeIterator iterator = parentPage.listChildren(new PageFilter());
while (iterator.hasNext()) {
Page childPage = (Page) iterator.next();
// 处理子节点逻辑
// ...
}
}
}
}
在上述代码示例中,listDirectChildren
方法接受一个父节点路径作为参数,并使用PageManager
获取父页面。然后,使用listChildren
方法和PageFilter
谓词获取父页面的直接子节点迭代器。在迭代器中,您可以使用Page
对象处理每个子节点的逻辑。