如何获取值自定义元数据属性
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"
我正在尝试获取 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"