开发者社区> 问答> 正文

如何从独立于Vaadin View的JS中调用后端方法?

我有以下情况。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是否提供一种在所有视图上“全局”存储对象的方法?我希望应用程序对事件做出反应,而与当前访问的视图无关。

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 13:12:20 565 0
1 条回答
写回答
取消 提交回答
  • 最简单的解决方案是使用顶级主布局的元素(视图容器/ MainView),而不是单个视图的元素。

    回答来源:Stack Overflow

    2020-03-27 13:12:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载