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

How to get values custom metadata properties

我正在尝试获取 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(): 

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

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

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

"dc:title" 带有注册的命名空间 "dc"(都柏林核心),而 "mine.title" 没有。

这就是 title = asset.getMetadataValue("dc:title").toString();customTitle = asset.getMetadataValue("mine.title").toString()

给你正确价值的原因

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

  • 将 属性 名称更改为 "dc:myTitle" 并以与检索 "dc:title" 相同的方式检索它 [0]
  • 您可以按照 Alex 描述的方式检索 "mine.title" 的值。

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

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

  • 注册一个新的命名空间并定义选项(在您的例子中,它是 "mine")。 查看 "/libs/dam/nodetypes""/libs/dam/options/metadata" 可能会有帮助。

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