我在AEM CRXDE(/ content / dam / parent)中有父资产节点。在父节点文件夹内有多个子节点。
使用Asset API如何迭代子节点。?
之后我必须读/写属性。!
此处的代码: -
AssetManager assetManager = resolver.adaptTo(AssetManager.class);
资产damAsset = assetManager.getAsset(“/ content / dam / parent”);
在父节点内部,我有多个子节点。 例如: -
答案 0 :(得分:0)
您无法从非资产资源(文件夹)获取Asset对象。在代码中调用getAsset方法将返回null,这是正常的并且符合预期!
如果您需要获得大坝:资产儿童,请使用Sharath Madappa在您的问题的评论中建议的解决方案,甚至是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框架将任何获取的资源调整为Asset对象。
答案 1 :(得分:0)
一般来说坝:资产不会有类型的孩子:资产。子资产例外。子资产是在主要资产为复合资产的情况下生成的。几个例子
在所有这些情况下,惯例是将这些内容放在名为 subassets 的特定子文件夹中。处理Asset
时,您可以使用getSubAssets
方法。
您无法通过将文件夹节点调整为资产来获取有效的资产对象。要获取文件夹中的资源,请在资源上使用getChildren。
如果需要查看子文件夹,请尝试使用节点迭代/树遍历来处理更简单的用例。您可以使用Sling Query和正确的搜索策略。
JCR查询不是最高性能的选择,只有在树遍历不是用例的选项时才应该使用。