2015-06-29 79 views
0

我正在嘗試獲取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(): 

有沒有辦法從自定義元數據屬性中獲取值?

+0

在標題= asset.getMetadataValue( 「DC:標題」)的toString(); toString()可能是多餘的。 asset.getMetadataValue()默認返回一個「String」。 – Sabya

回答

1

資產到底是簡單的節點,所以得到一些財產,你可以做這樣的事情(取決於變量fileReference的實際路徑):

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

「DC:標題爲」帶有一個註冊的命名空間「dc」(Dublin Core),而「mine.title」則不。

這就是title = asset.getMetadataValue("dc:title").toString();給你應有的價值比customTitle = asset.getMetadataValue("mine.title").toString()

您可以通過多種方式攻擊這個問題的原因。

  • 更改屬性的名稱爲「DC:myTitle」,並在您檢索以同樣的方式檢索「DC:標題爲」 [0]
  • 您可以檢索「mine.title」的價值Alex所描述的方式。

    資源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"

相關問題