我有一个类实例,上面有一个Callable
字段。我在绑定
对象上设置了这个实例。我需要在Nashorn中设置Callable
字段,以便在Java中调用。我该如何在Nashorn脚本中设置此字段?
脚本是这样调用的:
//in java
class Options {
Callable<Boolean> handler;
}
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
Bindings bindings = engine.createBindings();
Options options = new Options();
bindings.put("options", options);
engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
engine.eval(script);
Invocable executor = (Invocable) engine;
executor.invokeFunction("init");
在脚本中,我需要在全局选项
对象上设置处理程序
字段:
//in nashorn
function init() {
//How would I set a Callable on this field, from within nashorn?
options.handler = ?
}
我已经看到了(建议重复)如何使用Nashorn引擎调用Java对象的问题,但这个问题是关于从Nashorn脚本调用Java方法,而这个问题是关于在Nashorn脚本中设置一个可调用的,然后可以从Java调用它(基本上相反)。
基于本nashorn教程中的“扩展类”部分。测试过,对我有用:
var Callable = Java.type('java.util.concurrent.Callable');
var CallableImpl = Java.extend(Callable, {
call: function() {
print('test');
}
});
options.handler = new CallableImpl();
通过Java的Nashorn脚本引擎,我可以使用如下绑定在eval()的上下文中提供对象: 我希望通过提供一个默认对象来简化javascript,这样javascript就不是: 我可以写: 有没有办法做到这一点?(someMethod是对象上的方法,而不是静态方法)
在下面的代码中,javascript运行在与主线程不同的单独线程中。该脚本是一个无限循环,因此需要以某种方式终止。怎样 使命感脚本开始运行后,cancel()不起作用。但如果我打电话。cancel()在线程初始化之后,它将终止它(注释掉的行)。
问题内容: 编辑:为了将来参考,我正在使用非xhtml内容类型定义 我正在使用Django创建一个网站,并且试图在我的页面中嵌入任意json数据,以供客户端JavaScript代码使用。 假设我的json对象是。如果直接将其嵌入, 第一个关闭json对象。(此外,由于该json对象将动态生成,这将使站点容易受到XSS的攻击)。 如果使用django的HTML转义功能,则输出为: 并且浏览器无法解释
我在谷歌上研究了我的许多问题,但没有找到任何能提供直接答案的东西。我正在设置代码电子邮件一个表一次(或多次)。我无法设置收件人的电子邮件地址。我需要脚本为数据范围()中的每个地址发出一封电子邮件。 我很遗憾,由于隐私原因,我不能分享整个脚本。(从积极的方面来说,除了这个以外,其他的东西都起作用了。) 要获得“gmailapp.sendeMail”语句可用的一个(或多个)电子邮件地址,需要做什么?无
出于安全原因,我想传递给Nashorn本地Java类型中的JS函数。 如果我创建了一个引擎并运行以下程序: 剧本是 输出是 我对第二个不太满意,我不知道getClass是否公开了java.lang.类对象的任何方法。有没有一种方法来传递将Java字符串包装在本机字符串中的东西,以扩展Nashorn自己的JSObject?
我有课 在另一个类中,我从第一个类中获得了一个对象数组 现在我想写一个在第二个数组中查找名称的方法,并为该数组中第一个对象的实例分配一个新值 但我没有得到这个工作。我需要写点什么吗?在set()方法中? 谢谢=)