У меня есть следующий сценарий. Javascript выполняется во внешнем интерфейсе и реагирует на события. Если событие перехватывается, вызывается указанный c метод бэкэнда.
Я инициализирую бэкэнд следующим образом. Метод вызывается во время инициализации одного из моих Vaadin 14 представлений.
window.init = function(element) {
window.element = element;
...
}
Представление:
public class TestView extends Div {
public TestView() {
...
UI.getCurrent().getPage().executeJs("init($0)", this);
}
}
позже методы вызываются с window.element.$server.onTestEvent();
на внешнем интерфейсе.
Метод вызываемого бэкэнда:
@ClientCallable
private void onTestEvent() {
System.out.println("Test");
}
Теперь проблема:
Я передаю представление как element
.
Если я изменю представление, пройденный мною element
будет уничтожен, поэтому событие (на стороне сервера) не может быть выполнено, даже если оно перехватывается на внешнем интерфейсе.
Имеет Vaadin 14 предоставить способ хранения объектов «глобально» по всем представлениям? Я хочу, чтобы приложение реагировало на события, независимо от того, какое представление я в данный момент посещаю.