JxBrowser JSFunction.invoke с объектом

Я хочу вызвать функцию JavaScript из Java, передав функцию функции Object. Я надеялся сделать что-то вроде:

JSObject obj = new JSObject(); obj.setString("property1", "value); obj.setNumber("property2", number); и передайте объект в функцию JavaScript через метод JSFunction.invoke(). Но JSObject, по-видимому, не имеет конструктора по умолчанию и таких методов, как "setString". То же самое для JSONString.

В итоге я использовал библиотеку Google GSon для создания строки JSON, которую затем передал в "new JSONString()". Есть ли у вас лучший способ?

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

1 ответ

Вот пример кода, который демонстрирует, как создать объект и установить для него некоторые свойства:

Browser browser = new Browser();

browser.executeJavaScript("function foo(object) { console.log(object.property1); }");

JSObject object = browser.executeJavaScriptAndReturnValue("new Object()").asObject();
object.setProperty("property1", "value 1");
object.setProperty("property2", 15);

JSFunction function = browser.executeJavaScriptAndReturnValue("window.foo")
        .asFunction();
function.invoke(null, object);
Другие вопросы по тегам