2016-03-07 35 views
0

我在我的DAM中拥有资产。我引用它作为resource用下面的代码:找不到DAM资产的标签

TagManager tagManager = resourceResolver.adaptTo(TagManager.class); 
    Tag[] tags = tagManager.getTags(resource); 
    log.warn(tags.length + " tags found for resource:" + resource.getPath()); 

这转储到我的资产有0标记的日志。然而,当我在DAM管理员看这个资产时,它显示它有几个标签。

我在这里使用文档:https://docs.adobe.com/docs/en/cq/5-6-1/developing/tagging.html。有谁知道我是否这样做对吗?

回答

1

标记存储在DAM资产的元数据节点中(请参阅AEM文档中的Taggable Content)。因此,您无法直接从资产资源获取标签。

相反,您可以从资产的元数据中读取标签,如下所示。

TagManager tagManager = resourceResolver.adaptTo(TagManager.class); 
Asset asset = resource.adaptTo(Asset.class); 
Object[] tags = asset.getMetaData("cq:tags"); 

for (Object obj : tags) { 
    Tag tag = tagManager.resolve(obj.toString()); 
    //Do something with your tag. 
}