从JavaScript调用Java函数

时间:2013-05-06 10:57:37

标签: java javascript javafx-2 javafx

我试图使用JavaFX将Java函数称为JavaScript回调。 首先,我在初始化期间将Java类添加为窗口的成员:

JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);

Java请求函数在Platform.runLater()

中描述如下
String script = "document.makeRequest('"+inputString+"')";
currentWebEngine.executeScript(script);

在javascript端完成异步请求后,应调用java函数返回结果。但是,我在这方面遇到例外。我甚至尝试在没有参数的情况下调用函数,但仍然不起作用:

window.java.returnResult();

但我得到以下例外:

  

runnable中的异常   netscape.javascript.JSException:TypeError:'undefined'不是对象

它与异步请求无关,因为我甚至尝试直接在makeRequest()函数中调用它并得到了同样的错误。 知道我在那个区域做错了什么吗? 以前的代码集成在Desktop JFrame应用程序中,而不是applet。

2 个答案:

答案 0 :(得分:3)

我设法找到问题的解决方案。以下代码稍早调用,因此该类未在javascript中注册:

JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);

我只是在网络引擎的监听器上调用它并且它有效。

答案 1 :(得分:0)

使用DWR,您可以通过JavaScript使用java方法。