4
我工作的JavaFX 2.2,我使用的WebView在JavaFX的場景集成的HTML代碼,並能夠正確地加載HTML。我正在關注this鏈接,並試圖將一些對象從javascript傳遞給webview/controller,但是我在java端獲得了空值。的JavaFX 2.2的雙向通信的JavaScript和web視圖
我在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()方法中打印的值。有趣的一點是,當我在打印方法中將參數從Date更改爲String並從JavaScript傳遞字符串時,我得到了正確的值。
如何在這種情況下傳輸對象,尤其是Date對象。任何幫助深表appritiated
這回答了這個問題對我來說。我不得不序列化和反序列化我的Java對象到/來自JSON,以使事情能夠正常工作。使用GSON既快速又簡單,現在可以使用。這應該被標記爲正確答案。 – Splaktar