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

如何在Groovy脚本中匹配两个数组并设置JCR内容值?

用Groovy脚本实现JCR内容匹配设置

实现思路

先将关键词数组和对应值数组映射为键值对,便于快速查找匹配关系;再定位目标JCR节点,检查其body属性内容,匹配到关键词后设置对应的值,最后提交会话保存修改。

Groovy脚本示例

// 定义关键词与对应值数组
def array1 = ["descrip", "treat", "diagonis"]
def array2 = ["123", "345", "678"]

// 转换为键值映射,优化匹配效率
def keywordValueMap = [:]
array1.eachWithIndex { keyword, idx ->
    keywordValueMap[keyword] = array2[idx]
}

// 获取JCR会话(需根据实际环境调整,比如AEM中可通过resourceResolver获取)
def jcrSession = // 替换为实际获取Session的代码,例如:resourceResolver.adaptTo(Session.class)

// 目标节点路径(请根据实际场景修改)
def targetNodePath = "/content/your-project/target-node"
def targetNode = jcrSession.getNode(targetNodePath)

// 检查并处理body属性
if (targetNode.hasProperty("body")) {
    def bodyText = targetNode.getProperty("body").getString()
    
    keywordValueMap.each { keyword, value ->
        if (bodyText.contains(keyword)) {
            // 设置目标属性(替换为你实际要修改的JCR属性名)
            targetNode.setProperty("targetProperty", value)
            // 若只需匹配第一个命中的关键词,添加return跳出循环
            return
        }
    }
    
    // 提交会话保存修改
    jcrSession.save()
}

// 按需关闭会话
// jcrSession.logout()

注意事项

  • 若需批量处理多个节点,可通过jcrSession.getNodes()获取节点迭代器,循环遍历处理每个节点。
  • 获取JCR会话的方式需根据运行环境调整(比如在AEM、Jackrabbit等不同JCR实现中获取方式有差异)。
  • 如果允许body同时匹配多个关键词并设置多个值,去掉代码中的return语句即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:53:18