如何获取值自定义元数据属性

时间:2015-06-29 18:09:27

标签: java osgi aem

我试图在DAM中获取资产的元数据。但是,似乎元数据对于没有" dc:"的属性来说是空的。在他们面前。

Resource rs = getResourceResolver().getResource(fileReference);
Asset asset = rs.adaptTo(Asset.class);
//this works
title = asset.getMetadataValue("dc:title").toString(); 
//this does not work. 
//I have ensured that "mine.title" is a property and has string value assigned to it. 
customTitle = asset.getMetadataValue("mine.title").toString(): 
//this does not work either
customTitle = asset.getMetadata("mine.title").toString(): 

有没有办法从自定义元数据属性中获取值?

2 个答案:

答案 0 :(得分:1)

最后的资产是简单的节点,所以要获得一些属性,你可以做这样的事情(取决于变量fileReference的实际路径):

Resource metadataResource = rs.getChild("jcr:content/metadata");
ValueMap properties = ResourceUtil.getValueMap(metadataResource);
customTitle = properties.get("mine.title", "defaultValue")

答案 1 :(得分:0)

" DC:标题"附带一个注册名称空间" dc" (都柏林核心)而#34; mine.title"没有。

title = asset.getMetadataValue("dc:title").toString();给你正确价值的原因是customTitle = asset.getMetadataValue("mine.title").toString()

您可以通过多种方式解决此问题。

  • 将属性名称更改为" dc:myTitle"并以与检索" dc:title"相同的方式检索它。 [0]
  • 您可以检索" mine.title"的值就像亚历克斯所描述的那样。

    资源rs = getResourceResolver()。getResource(fileReference +" / jcr:content / metadata"); ValueMap damAssetValueMap = damResource.adaptTo(ValueMap.class);

    String shortName = damAssetValueMap.get(" shortName",String.class);

  • 注册一个新的命名空间并定义选项(在您的情况下,它的"我的")。 查看"/libs/dam/nodetypes""/libs/dam/options/metadata"可能会有所帮助。

[0]检查"/libs/dam/options/metadata"