diff --git a/CHANGELOG.md b/CHANGELOG.md index e133f3b87..3c76f27fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ # 5.7.14 (2021-09-22) ### 🐣新特性 +* 【extra 】 修复HttpCookie设置cookies的方法,不符合RFC6265规范问题(issue#I4B70D@Gitee) + ### 🐞Bug修复 * 【http 】 修复HttpCookie设置cookies的方法,不符合RFC6265规范问题(pr#418@Gitee) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/expression/engine/jexl/JexlEngine.java b/hutool-extra/src/main/java/cn/hutool/extra/expression/engine/jexl/JexlEngine.java index 026608045..c6e2e1b53 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/expression/engine/jexl/JexlEngine.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/expression/engine/jexl/JexlEngine.java @@ -23,7 +23,15 @@ public class JexlEngine implements ExpressionEngine { @Override public Object eval(String expression, Map context) { - return engine.createExpression(expression).evaluate(new MapContext(context)); + final MapContext mapContext = new MapContext(context); + + try{ + return engine.createExpression(expression).evaluate(mapContext); + } catch (Exception ignore){ + // https://gitee.com/dromara/hutool/issues/I4B70D + // 支持脚本 + return engine.createScript(expression).execute(mapContext); + } } /** diff --git a/hutool-extra/src/test/java/cn/hutool/extra/expression/ExpressionUtilTest.java b/hutool-extra/src/test/java/cn/hutool/extra/expression/ExpressionUtilTest.java index 59252e04b..9a36b609e 100644 --- a/hutool-extra/src/test/java/cn/hutool/extra/expression/ExpressionUtilTest.java +++ b/hutool-extra/src/test/java/cn/hutool/extra/expression/ExpressionUtilTest.java @@ -9,6 +9,9 @@ import cn.hutool.extra.expression.engine.spel.SpELEngine; import org.junit.Assert; import org.junit.Test; +import java.util.HashMap; +import java.util.Map; + public class ExpressionUtilTest { @Test @@ -33,6 +36,17 @@ public class ExpressionUtilTest { Assert.assertEquals(-143.8, (double)eval, 2); } + @Test + public void jexlScriptTest(){ + ExpressionEngine engine = new JexlEngine(); + + String exps2="if(a>0){return 100;}"; + Map map2=new HashMap<>(); + map2.put("a", 1); + Object eval1 = engine.eval(exps2, map2); + Assert.assertEquals(100, eval1); + } + @Test public void mvelTest(){ ExpressionEngine engine = new MvelEngine();