Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aem 有没有办法以编程方式设置资产的元数据?_Aem_Sling - Fatal编程技术网

Aem 有没有办法以编程方式设置资产的元数据?

Aem 有没有办法以编程方式设置资产的元数据?,aem,sling,Aem,Sling,我在CQ5中添加了一个名为/dc:sample的自定义元数据。有没有一种方法可以通过编程方式为资产设置此元数据 我编写了一个工作流,截取上传的资产,并用第三方服务发送的inputstream替换它们。我通过在我的工作流程中执行以下操作来实现这一点 Rendition rendition = resource.adaptTo(Rendition.class); Asset asset = rendition.getAsset(); InputStream newInputStream = mySe

我在CQ5中添加了一个名为
/dc:sample
的自定义元数据。有没有一种方法可以通过编程方式为资产设置此元数据

我编写了一个工作流,截取上传的资产,并用第三方服务发送的
inputstream
替换它们。我通过在我的工作流程中执行以下操作来实现这一点

Rendition rendition = resource.adaptTo(Rendition.class);
Asset asset = rendition.getAsset();
InputStream newInputStream = myService.sendFile(is);
asset.addRendition(rendition.getName(),newInputStream,asset.getMimeType());
问题


此时,我想将
/dc:sample
元数据设置为类似“测试检查”的字符串。这可能吗?

您可以将
资产
调整为
资源
,获取其
jcr:content/metadata
孙子并将其调整为
可修改的ValueMap

Resource metadataRes = asset.adaptTo(Resource.class).getChild("jcr:content/metadata");
ModifiableValueMap map = metadataRes.adaptTo(ModifiableValueMap.class);
map.put("dc:sample", "test checking");
resourceResolver.commit();

似乎
ModifiableValueMap
2.5.0
中可用。我一直在使用
2.2.4
。我在POM中更改了版本,代码编译并生成了捆绑包。但是,当我将此捆绑包上载到CQ5时,它给出错误:
捆绑包[345]中的未解决约束:无法解决345.0:缺少需求[345.0]osgi.willing.package;(&(osgi.wiring.package=org.apache.sling.api.resource)(版本>=2.4.0)(!(版本>=3.0.0)))
默认情况下,安装了一个捆绑包
apachesling-api(org.apache.sling.api)
,版本为
2.4.3.R1488084
。我应该删除它并上传
2.5.0
?这会破坏CQ5中的其他东西,因为它默认存在。提供了几种在不同Sling和CQ版本中设置属性的方法。