Rhino conversion java.lang.String to JavaScript String

Rhino conversion java.lang.String to JavaScript String

本文关键字:String to JavaScript lang conversion java Rhino      更新时间:2023-09-26

Context.javaToJS似乎只是直接传递java.lang.Strings。

我沙箱JavaScript(根据http://codeutopia.net/blog/2009/01/02/sandboxing-rhino-in-java/),所以java.lang.String是不可用的JavaScript,除非我通过ClassShutter打孔(我宁愿不这样做)。

我错过了什么明显的吗?

试试这个:

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
ScriptContext context = engine.getContext();
context.setAttribute("jsString", "I am Java String", ScriptContext.ENGINE_SCOPE);
context.setAttribute("jsBoolean", true, ScriptContext.ENGINE_SCOPE);
context.setAttribute("jsNumber",  123456, ScriptContext.ENGINE_SCOPE);
engine.eval("function getValueAndType(obj){return obj + ' - ' + typeof obj;}");
Assert.assertEquals("Something wen wrong", "I am Java String - string", engine.eval("getValueAndType(jsString)"));
Assert.assertEquals("Something wen wrong", "true - boolean", engine.eval("getValueAndType(jsBoolean)"));
Assert.assertEquals("Something wen wrong", "123456 - number", engine.eval("getValueAndType(jsNumber)"));