From ebdb4f4ded8bd24986128df47e032d22cdf6db11 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Sat, 09 Jul 2022 14:18:04 +0800 Subject: [PATCH] fix 全站发布 --- src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java | 37 ++++++++++++++----------------------- 1 files changed, 14 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java index 7d9cd18..783dfe1 100644 --- a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java +++ b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java @@ -8,8 +8,10 @@ import com.xcong.farmer.cms.core.tag.TagsEnum; import com.xcong.farmer.cms.core.template.Configuration; import com.xcong.farmer.cms.core.template.TemplateConfiguration; +import com.xcong.farmer.cms.utils.GroovySingleton; import groovy.lang.Binding; import groovy.lang.GroovyShell; +import groovy.lang.Script; import org.apache.commons.text.StringSubstitutor; import org.jsoup.nodes.Attribute; import org.jsoup.nodes.Attributes; @@ -145,6 +147,7 @@ } } + runDataInject(); } @@ -194,24 +197,8 @@ Map<String, String> targetData = new HashMap<>(); while (matcher.find()) { String group = matcher.group(); -// String splitValue = group.replaceAll("\\$\\{", "").replaceAll("}", ""); -// String[] split = splitValue.split("\\."); -// if (split.length == 0) { -// continue; -// } -// -// for (Map.Entry<String, Object> entry : this.parserData.entrySet()) { -// String fieldKey = entry.getKey(); -// Map<String, Object> data = (Map<String, Object>) entry.getValue(); -// JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(data.get("state"))); -// -// for (Map.Entry<String, Object> map : jsonObject.entrySet()) { -// if (map.getValue() instanceof String) { -// targetData.put(fieldKey + "." + map.getKey(), (String) map.getValue()); -// } -// } -// } + GroovyShell groovyShell = GroovySingleton.getSingleton(); Binding binding = new Binding(); for (Map.Entry<String, Object> entry : this.parserData.entrySet()) { String fieldKey = entry.getKey(); @@ -223,12 +210,16 @@ binding.setProperty("system", systemData); } - GroovyShell shell = new GroovyShell(binding); - Object evaluate = shell.evaluate(group); - if (evaluate == null) { - targetData.put(group, ""); - } else { - targetData.put(group, evaluate.toString()); + synchronized (this) { + Script parse = groovyShell.parse(group); + parse.setBinding(binding); + Object evaluate = parse.run(); + if (evaluate == null) { + targetData.put(group, ""); + } else { + targetData.put(group, evaluate.toString()); + } + groovyShell.getClassLoader().clearCache(); } } -- Gitblit v1.9.1