私はJavaFX2.2に取り組んでおり、Webviewを使用してHTMLコードをJavaFXシーンに統合しており、HTMLを正しくロードできました。私はこのリンクをたどっていて、いくつかのオブジェクトをjavascriptからwebview / controllerに渡そうとしていましたが、java側でnull値を取得しています。
以下のようにインターフェースオブジェクトを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()メソッドで常にnull値が出力されます。興味深い点は、printメソッドでパラメーターをDateからStringに変更し、javascriptから文字列を渡すと、正しい値が得られることです。
この場合、オブジェクト、特にDateオブジェクトを転送する方法。どんな助けでも大いに感謝されます