如何从内容页面检索第一个PAR节点

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函数的工作吗?

kfa*_*ber 9

您必须遍历子页面的子节点.

获取具有资源类型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组件.我没有对此进行测试,因此可能需要进行一些修改才能使其正常工作.