jus*_*der 4 java iteration aem
我正在遍历所有子页面以显示其标题和链接.但我还需要显示第一个段落节点(如果存在).
例如,哇我会从以下内容页面检索第一个PAR节点吗?
/content
/foo
/jcr:content
/title
/par <- need this one
/par
/image
Run Code Online (Sandbox Code Playgroud)
我认为Page类 getProperties().get()方法可行,但我只看到在jcr:content中返回属性的示例,而不是它下面的任何子节点.
ArrayList aChildren = new ArrayList();
String listroot = properties.get("listRoot", currentPage.getPath());
Page rootPage = pageManager.getPage(listroot);
if (rootPage != null) {
Iterator<Page> children = rootPage.listChildren(new PageFilter(request));
while (children.hasNext()) {
Page child = children.next();
out.println( child.getTitle() + "<br>" );
//Output first PAR tag of this page here
}
}
Run Code Online (Sandbox Code Playgroud)
可以使用或者使用其他特定于CQ的标记,或者这是java函数的工作吗?
您必须遍历子页面的子节点.
获取具有资源类型parsys的第一个节点.拥有该节点后,您可以获取其路径并将其包含在当前页面上.
Resource childResource = resourceResolver.getResource(child.getPath());
Node childNode = childResource.adaptTo(Node.class);
Node jcrContent = childNode.getNode("jcr:content");
NodeIterator childrenNodes = jcrContent.getNodes();
while(childrenNodes.hasNext()){
Node next = childrenNodes.nextNode();
String resourceType = next.getProperty("sling:resourceType").getString();
if(resourceType.equals("foundation/components/parsys")){
%><cq:include path="<%= next.getPath() %>" resourceType="foundation/components/parsys" /><%
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这将在当前页面上嵌入子页面上的第一个parsys组件.我没有对此进行测试,因此可能需要进行一些修改才能使其正常工作.
| 归档时间: |
|
| 查看次数: |
8211 次 |
| 最近记录: |