如何在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
相关产品推荐
相关产品推荐

