javascript - Rhino 将 java.lang.String 转换为 JavaScript 字符串

标签 javascript java rhino

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)"));

关于javascript - Rhino 将 java.lang.String 转换为 JavaScript 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448011/

相关文章:

java - 使用谷歌应用引擎跨浏览器/服务器重启的 session 持久性

java - 在 Rhino 中访问 java map 和列表作为 JavaScript 对象

javascript - Android rhino计算奇怪的行为

javascript - 使用 Javascript 为 Firefox 扩展创建 XML 文件的本地副本

java - 尽管@NotNull和@Size注释,Spring mvc表单验证没有报告错误

java - Spring 根据属性文件中的属性导入资源 - 不使用 spring 配置文件 - 条件上下文加载

javascript - Rhino 和 Spidermonkey JavaScript 引擎有什么区别?

javascript - jQuery 事件处理和 ready 函数

javascript - 我的 jQuery .load 是否被 CMS 阻止?

javascript - 尝试设置 3 个不同的 ngIf 以不同的点击次数打开