You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Sling Servlet中用ValueMap更新资源属性?遇UnsupportedOperationException

解决ValueMap修改时的UnsupportedOperationException问题

直接通过Resource.adaptTo(ValueMap.class)获取的是只读的ValueMap实例,调用put()方法自然会抛出UnsupportedOperationException。要修改JCR属性,你需要将Resource适配为ModifiableValueMap,它支持写入操作。

另外要注意:

  • 确保你的ResourceResolver拥有目标页面的修改权限(比如通过有权限的用户登录获取)
  • 修改完成后必须调用resourceResolver.commit()提交更改,否则修改不会持久化到JCR中

修正后的代码如下:

Resource next = resources.next();
String path = next.getPath();
Resource contentResource = resourceResolver.getResource(path + "/jcr:content");

if (contentResource != null) {
    // 适配为可修改的ValueMap
    ModifiableValueMap modifiableMap = contentResource.adaptTo(ModifiableValueMap.class);
    if (modifiableMap != null) {
        modifiableMap.put("pageTitle", "MyProject");
        // 提交更改到JCR
        resourceResolver.commit();
    }
}

内容的提问来源于stack exchange,提问作者Akshayakumar K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 08:09:52