Aem CQ Jcr节点如何解析Sling:OrderedFolder Jcr:primarytype和get子节点

Aem CQ Jcr节点如何解析Sling:OrderedFolder Jcr:primarytype和get子节点,aem,jcr,sling,dam,xpathnodeiterator,Aem,Jcr,Sling,Dam,Xpathnodeiterator,上述结构的父文件夹:pdf文件夹的路径为->/content/dam/example/corporate/pdf pdf文件夹的jcr:primarytype值为Sling:OrderedFolder,另外两个文件夹“2013”“2014”的值也是如此。。。 如果父“pdf”是一种页面类型,那么我完全知道如何通过使用jcr节点api迭代页面结构并检索子节点的属性信息 但不幸的是,“pdf”是orderedfolder类型 我现在需要的是,遍历该结构并检索所有pdf路径并存储到ArrayList

上述结构的父文件夹:pdf文件夹的路径为->
/content/dam/example/corporate/pdf
pdf文件夹的
jcr:primarytype
值为
Sling:OrderedFolder
,另外两个文件夹“2013”“2014”的值也是如此。。。

如果父“pdf”是一种页面类型,那么我完全知道如何通过使用jcr节点api迭代页面结构并检索子节点的属性信息

但不幸的是,“pdf”是orderedfolder类型

我现在需要的是,遍历该结构并检索所有pdf路径并存储到
ArrayList
,例如,“2013exampleOne.pdf”节点的路径是
/content/dam/example/corporate/pdf/2013exampleOne.pdf
, “2014examplePDFTwo.pdf”的路径是
/content/dam/example/corporate/pdf/2014examplePDFTwo.pdf
…等等。。。(此列表可能会将应用程序的其他部分用于以后下载pdf,但这与我当前的问题无关…)

下面是我自己的尝试代码(请注意,这只是我的servlet的一部分,):

同样,父文件夹“pdf”的路径是
/content/dam/example/corporate/pdf

有什么建议可以帮助我吗?谢谢

ps:请提供代码示例以提供帮助,干杯

为什么不使用查询

XPATH:

/jcr:root/content/dam/example/corporate/pdf//*[jcr:primaryType='dam:Asset']
您可以像这样使用QueryManager:

Session session = resourceResolver.adaptTo(Session.class)   
QueryManager qm = session.getWorkspace().getQueryManager();
Query q = qm.createQuery("/jcr:root/content/dam/example/corporate/pdf//*[jcr:primaryType='dam:Asset']", "xpath");
QueryResult result = q.execute();
NodeIterator nIt = result.getNodes();
这样,您就可以在节点上进行迭代

另外,代码中还有一个小提示,即您将使用nextNode()两次。因此,您将进一步迭代,而不检查是否存在下一个节点

Session session = resourceResolver.adaptTo(Session.class)   
QueryManager qm = session.getWorkspace().getQueryManager();
Query q = qm.createQuery("/jcr:root/content/dam/example/corporate/pdf//*[jcr:primaryType='dam:Asset']", "xpath");
QueryResult result = q.execute();
NodeIterator nIt = result.getNodes();