1

我有以下情况。Javascript 在前端执行并对事件做出反应。如果捕获到事件,则会调用特定的后端方法。

我像下面这样初始化后端。在初始化我的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是否提供了一种在所有视图上“全局”存储对象的方法?我希望应用程序独立于我当前访问的视图对事件做出反应。

4

1 回答 1

5

最简单的解决方案是使用顶级主布局的元素(视图容器/MainView)而不是单个视图的元素。

于 2020-03-13T10:49:42.350 回答