正如书名所描述的,我想实现如下:如何从JavaScript调用Java方法
- 创建Java对象
- 将其传递给JavaScript
- 调用方法(一传递的对象
- 上二传手例如)继续工作与对象在Java
我使用包含在Java脚本。 如果有人能帮助我,我会很高兴。
正如书名所描述的,我想实现如下:如何从JavaScript调用Java方法
我使用包含在Java脚本。 如果有人能帮助我,我会很高兴。
如果您正在使用ScriptEngine框架,这非常简单。你可以在“传递” Java对象到JavaScript的方式有两种:
您还可以从JavaScript访问Java构造函数,并根据需要实例化Java对象。
要做第一件事,你必须为脚本引擎设置“绑定”。这就像一个地图:
final Bindings globals = engine.createBindings();
globals.put("foo", yourObject);
现在,当JavaScript代码在引擎运行,全局符号“foo”将被作为一个Java对象的引用。你可以绑定尽可能多的引用,只要你喜欢。
如果您想将Java对象作为参数传递给JavaScript函数,您首先需要的是通过调用 JavaScript函数。要做到这一点,您可以使用“invokeFunction”或“invokeMethod中”法经“Invocable的”界面曝光:
final Object result = ((Invocable) engine).invokeMethod(context, methodName, arg, arg, ...);
的“上下文”还有就是你想this
指东西参考功能这就是所谓的。 “methodName”只是一个给出全局JavaScript函数名称的字符串。
Java类通过它们完全合格的路径名可用于JavaScript环境:
var javaHashMap = new java.util.HashMap();
这会给你一个Java HashMap实例JavaScript变数。
你能为此提供一个简单的代码吗?现在我用键和对象“放”,但不知道这是否是你说的方式。我有另一个问题 - importPackage。我知道在犀牛中你只需添加scope = new ImporterTopLevel(cx),但是我怎么才能在ScriptEngine中实现这一点? – o15a3d4l11s2 2011-01-28 14:43:27