У меня есть следующий код Vaadin 8:
Page.getCurrent().getJavaScript().addFunction("getDocument", args -> {
...
//java rest call
...
});
getDocument вызывается в коде javascript.
window.documentSign = function(signerUrl,procedure) {
....
getDocument(signerRequest.responseText,procedure,messageId);
....
}
Как я могу перенести этот фрагмент кода в Vaadin Flow 14?
Заранее спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто используйте:
UI.getCurrent().getPage().executeJs("getDocument", <args as varargs>)
addFunction в Vaadin 8 предоставляет JavaScript возможность отправлять данные обратно на сервер.
Я предполагаю, что это не одноразовый случай, который можно обработать, вернув значение (или обещание) через executeJs. Я также предполагаю, что этот случай не связан с классом компонента, где вы можете определить метод @ClientCallable в Java и получить к нему доступ из JS через element.$server.
Остается запустить пользовательское событие DOM в элементе <body> и прослушивать это событие в элементе UI через Java.
Запуск события из JS:
document.body.dispatchEvent(new CustomEvent('event-name', { detail: 'String from JS' }));
Прослушивание события в Java:
ui.getElement().addEventListener("event-name", event -> {
System.out.println(event.getEventData().getString("event.detail"));
}).addEventData("event.detail");
Спасибо за быстрый ответ. Я думаю, что вопрос может быть не ясен. Он обновлен.