如何在Sling servlet中使用valuemap更新资源属性?

问题描述 投票:0回答:1

我正在获取所有页面,将所有页面的 jcr:content 作为资源,并尝试通过使 ValueMap 适应资源来使用 valueMap 来更新 pageTitle 属性,但我 收到 UnsupportedOperationException,

请大家帮忙解决一下, 这是我的代码片段:

Resource next = resources.next();
String path=next.getPath();
Resource resource=resourceResolver.getResource(path+"/jcr:content");
ValueMap pages = null;
if (resource != null) {
pages = resource.adaptTo(ValueMap.class);
}
if(pages != null) {
pages.put("pageTitle","MyProject");
}
java servlets osgi aem sling-models
1个回答
0
投票

在您的代码片段中,我发现您将

ValueMap
改编为资源。

基本上,您无法直接更新资源的任何属性。在 AEM 中,当您调用

resource.adaptTo(ValueMap.class)
时,您通常会获得一个表示资源属性的不可变 ValueMap 对象。

不可变意味着你不能直接使用这个ValueMap修改属性。

要修改属性,您需要将资源调整为

ModifiableValueMap
,它允许您更改资源的属性。

这是实现这一目标的方法,

ModifiableValueMap modifiableValueMap = resource.adaptTo(ModifiableValueMap.class);
modifiableValueMap.put("key","value");
© www.soinside.com 2019 - 2024. All rights reserved.