我正在研究 JavaFX 2.2,我正在使用 webview 将 html 代码集成到 JavaFX 场景中,并且能够正确加载 html。我正在关注这个链接,并试图将一些对象从 javascript 传递到 webview/controller,但我在 java 端得到空值。
我在 JSObject 中保存了一个接口对象,如下所示
webEngine.getLoadWorker().stateProperty().addListener(
new ChangeListener<State>() {
@Override
public void changed(ObservableValue<? extends State> ov,
State oldState, State newState) {
if (newState == State.SUCCEEDED) {
JSObject win = (JSObject) webEngine.executeScript("window");
win.setMember("app", new JavaApp());
}
}
}
);
我创建了一个类
public class JavaApp {
public void exit() {
Platform.exit();
}
public void print(Date date) {
System.out.println("Parm:"+date);
}
public Date getValue() {
return new Date();
}
}
我的html是
<html lang="en">
<head>
<script type="text/javascript">
function callJava(){
app.print(new Date());
var val = app.getValue();
app.print(val);
}
</script>
</head>
<body>
<p>Help</p>
<p><a href="about:blank" onclick="callJava();">Exit the Application</a></p>
</body>
</html>
在上面的代码中,我总是在 JavaApp.print() 方法中打印空值。有趣的一点是,当我在 print 方法中将参数从 Date 更改为 String 并从 javascript 传递字符串时,我得到了正确的值。
在这种情况下我如何传输对象,尤其是 Date 对象。任何帮助都非常感谢