All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.extra.expression.engine.rhino.RhinoEngine Maven / Gradle / Ivy

Go to download

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

There is a newer version: 5.8.34
Show newest version
package cn.hutool.extra.expression.engine.rhino;

import cn.hutool.core.map.MapUtil;
import cn.hutool.extra.expression.ExpressionEngine;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;

import java.util.Collection;
import java.util.Map;

/**
 * rhino引擎封装
* 见:https://github.com/mozilla/rhino * * @author lzpeng * @since 5.5.2 */ public class RhinoEngine implements ExpressionEngine { static { checkEngineExist(Context.class); } @Override public Object eval(String expression, Map context, Collection> allowClassSet) { final Context ctx = Context.enter(); final Scriptable scope = ctx.initStandardObjects(); if (MapUtil.isNotEmpty(context)) { context.forEach((key, value)->{ // 将java对象转为js对象后放置于JS的作用域中 ScriptableObject.putProperty(scope, key, Context.javaToJS(value, scope)); }); } final Object result = ctx.evaluateString(scope, expression, "rhino.js", 1, null); Context.exit(); return result; } private static void checkEngineExist(Class clazz){ // do nothing } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy