我正在获取所有页面,将所有页面的 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");
}
在您的代码片段中,我发现您将
ValueMap
改编为资源。
基本上,您无法直接更新资源的任何属性。在 AEM 中,当您调用
resource.adaptTo(ValueMap.class)
时,您通常会获得一个表示资源属性的不可变 ValueMap 对象。
不可变意味着你不能直接使用这个ValueMap修改属性。
要修改属性,您需要将资源调整为
ModifiableValueMap
,它允许您更改资源的属性。
这是实现这一目标的方法,
ModifiableValueMap modifiableValueMap = resource.adaptTo(ModifiableValueMap.class);
modifiableValueMap.put("key","value");