Метод Java с именем WebEngine (по JavaScript) не выполняется после первой загрузки содержимого в WebEngine - PullRequest
0 голосов
/ 07 мая 2020

Я работаю над приложением, которое считывает метод (println()) из кода Java в коде JavaScript в локальном файле HTML, который загружается WebEngine, когда пользователь выбирает элемент в ComboBox.

Метод успешно вызывается в первый раз, когда пользователь выбирает элемент в ComboBox (это первый раз, когда контент загружается в WebEngine), но после первого раза метод больше не выполняется.

Если вы можете объяснить мне, как написать код таким образом, чтобы метод выполнялся даже после первой загрузки содержимого в WebEngine.

My Controller. java:

public class Controller {

    ObservableList<String> months = FXCollections.observableArrayList
        ("Tishrei", "Cheshvan", "Kislev", "Tevet", "Shevat", "Adar",
        "Nisan", "Iyar", "Sivan", "Tammuz", "Av", "Elul");

    public ComboBox<String> month;
    public WebView webView;

    public void println(String s){
        System.out.println(s);
    }

    @FXML
    public void initialize() {
        month.setItems(months);

        WebEngine webEngine = webView.getEngine();
        JSObject win = (JSObject) webEngine.executeScript("window");
        win.setMember("app", this);

        month.setOnAction(event -> {
            String loadFile = this.getClass().getResource("index.html").toString();
            webEngine.load(loadFile);
        });
    }
}

Скрипт в HTML файле:

<html>
    <head>
        <meta charset="UTF-8">
    </head>

    <body>
        <script type="text/javascript">
            app.println("Hallow World!");
        </script>
    </body>
</html>
...