Как передать значение на html-странице javaFx Webview

В настоящее время я открываю HTML-страницу в веб-просмотре. Код выглядит следующим образом:

    WebView webView = new WebView();
    WebEngine webEngine = webView.getEngine();
    URL resource = getClass().getClassLoader().getResource("test.htm");
    webEngine.load( resource.toString() );
    Scene scene = new Scene(webView,width,height);
    primaryStage.setScene(scene);
    primaryStage.setAlwaysOnTop(true);
    primaryStage.setFullScreen(true);
    primaryStage.setFullScreenExitHint("");
    Platform.setImplicitExit(false);
    System.out.println("Starting the webview....");
    primaryStage.show();

Я хочу отобразить значение на странице HTML. Может ли кто-нибудь предложить мне, как я могу передать значение из вышеуказанного кода Java при загрузке HTML-страницы.

Вам это помогает?stackoverflow.com/questions/14187963/…

Aalexander 18.12.2020 08:37

@ Алекс, я не думаю, что это связано. Эти вопросы и ответы касаются FXML и того, как передавать информацию между различными экземплярами контроллера. У ОП есть WebView, и он хочет манипулировать веб-страницей с Java.

Slaw 18.12.2020 08:55

@Manish Загляните в WebEngine#executeScript(String).

Slaw 18.12.2020 08:57

@Alex Алекс, я просто хочу ввести значение, которое я могу распечатать на веб-странице.

Manish 18.12.2020 09:03
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
240
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать WebEngine#executeScript для установки любых объектов или значений javascript на веб-странице. Но вам все равно нужно написать собственный javascript, который считывает это значение и отображает его внутри DOM. Что-то вдоль этого

engine.executeScript("document.getElementByid('myDiv').innerHTML = '" + myValue + "'");

Другой способ, если у вас есть полный контроль над HTML, заключается в том, чтобы проанализировать HTML с помощью String.replace и заменить заполнитель внутри вашего HTML значением, которое вы хотите иметь.

String htmlContent = .../* read HTML file as string  */;
webEngine.loadContent(htmlContent.replace("{myVar}", myValue), "text/html"); 

Это может быть расширено с помощью различных фреймворков, таких как Apache Commons StringSubtututor. https://commons.apache.org/proper/commons-text/apidocs/org/apache/commons/text/StringSubstitutor.html

Пробовал это, но html-страница по-прежнему показывает {myVar}, она не заменяется myValue

Manish 18.12.2020 10:04

ну, вам нужно поместить строку {myVar} в ваш HTML-файл: D

Marcel 18.12.2020 10:05

да, это у меня есть на моей html-странице "номер: <b>{myVar}</b>"

Manish 18.12.2020 10:07

хорошо, у resource.toString есть путь к файлу, а не содержимое. Позвольте мне разобраться в этом.

Manish 18.12.2020 10:10

Вам нужно загрузить html-файл в виде строки, а затем использовать .loadContent()

Marcel 18.12.2020 10:16

Другие вопросы по теме