我在aem crxde(/content/dam/parent(内有父级节点。在父节点文件夹中,有多个子节点。
使用资产API如何迭代子节点。?
之后,我必须读/写属性。!
代码在这里: -
AssetManager AssetManager = Resolver.Adaptto(AssetManager.Class(;
Asset Damasset = AssetManager.getAsset("/content/dam/parent"(;
在父节点内有多个子节点。例如: -
- /content/dam/parent/child1
- /content/dam/parent/child2
- /content/dam/parent/child3我需要访问和读取这些节点的属性。!
您无法从非资产资源(文件夹(获得资产对象。代码中对getAsset方法的调用将返回null,这是正常且预期的!
如果您需要获取大坝:资产儿童,请在评论中建议您的问题,甚至是SQL2查询的解决方案,例如:
final Iterator<Resource> allAssetChildren = resolver.findResources(
String.format("SELECT * FROM [dam:Asset] AS node WHERE
ISDESCENDANTNODE(node,'%s')", "/content/dam/parent"),
javax.jcr.query.Query.JCR_SQL2
);
最后,您可以使用Adaptto Framework将任何获得的资源调整为资产对象。
通常,大坝:资产将没有大坝类型的孩子:资产。一个例外是子资产。子资产是在主要资产是复合材料的情况下生成的。很少的例子
- pdf,每个页面都被提取为子资产。
- PSD,每一层被提取为子资产。
- 从AI故事板提取子资产。
在所有这种情况下,约定是将它们在称为 subsestets 的特定子文件夹中。处理Asset
时,您可以使用getSubAssets
方法。
您无法通过将文件夹节点调整为资产来获得有效的资产对象。要在资源上获取资产中的资产。
如果您需要在子文件夹中查看,请尝试使用节点迭代/树遍历,以简化用例。您可以使用正确的搜索策略使用吊索查询。
jcr查询不是最性能的选择,只有在用用例中的树遍历中,您才能使用。