gpt4 book ai didi

java - 如何在 JavaFX WebView 中将表单对象发送到 Java

转载 作者:行者123 更新时间:2023-12-01 11:43:28 24 4
gpt4 key购买 nike

我能够将一个简单的字符串从 Webview 中的 javascript/local html 发送到 Java。
如何将整个表单对象发送到 Java?

    public class JFXTest1 extends Application {
WebView webview = new WebView();
webview.getEngine().load(JFXTest1.class.getResource("local1.html").toExternalForm());

JSObject jsobj = (JSObject) webview.getEngine().executeScript("window");
Local1JSBridge bridge = new Local1JSBridge();

bridge.setWindow(jsobj);

jsobj.setMember("java", bridge);

还有我的桥。

   public class Local1JSBridge {
public void printFormData(String data1){

System.out.println( data1);

}

}

调用Java类中方法的javascript部分。

<html>
<head></head>
<body>

hi :)

<form id="form1" name="form1">
<input type="text" id="text1">text value</input>
</form>
<button onclick="java.printFormData(document.getElementById('text1').value);">Submit</button>
<br/>

<button onclick="java.exit()">Exit</button>
</body>

最佳答案

我无法找到一种方法来实际获取表单数据而不在 HTML 文档中执行 Javascript,但以下似乎基本上有效:

public void printFormData(Object form) {
System.out.println(form.getClass() + " " + form);

if (form instanceof Element) {
NodeList inputs = ((Element)form).getElementsByTagName("input");
for (int i = 0 ; i < inputs.getLength(); i++) {
Node input = inputs.item(i);
Element inputEl = (Element)input ;

String id = inputEl.getAttribute("id");
String value = (String) engine.executeScript(id+".value");

System.out.printf("%s : %s %n", id, value);
}
}
}

然后在 HTML 中:

<html>
<head></head>
<body>

hi :)

<form id="form1" name="form1">
<input type="text" id="text1">text value</input>
</form>
<button onclick="java.printFormData(document.getElementById('form1'));">Submit</button>
<br/>

<button onclick="java.exit()">Exit</button>
</body>
</html>

关于java - 如何在 JavaFX WebView 中将表单对象发送到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29324815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com