Vaadin 将 JavaScript 流转至 Java 调用

2024-03-11

按照本教程进行操作https://vaadin.com/blog/calling-java-from-javascript https://vaadin.com/blog/calling-java-from-javascript我试图从 javascript 调用 Java 函数,但这似乎没有按预期工作。

我有一个包含一个按钮的视图,该按钮在其 onClick 处理程序上触发对 Javascript 函数的调用,该函数按预期工作。

我遇到的问题是,当我传递给 javascript 函数的 getElement() 到达 javascript 端时,它是未定义的。

我的代码如下所示:

@JavaScript("./js/script.js")
public class RouteGraphicsView extends Div {
....
        Button b = new Button("Test Button");
        b.addClickListener(new ComponentEventListener<ClickEvent<Button>>() {

            private static final long serialVersionUID = 1L;

            @Override
            public void onComponentEvent(final ClickEvent<Button> event) {
                UI.getCurrent().getPage().executeJs("greet($0, $1)", "test name", UI.getCurrent().getElement());
            }
        });
....
}

上面的调用到达 script.js 文件,如下所示

window.greet = function greet(name, element) {
    console.log("Hello, I am greeting you, " + name);
    
    try {
        console.log("Element ", element);
        console.log("Logging 1", element.$server);
    } catch (e) {
        console.log(e);
    }
}

上面的greet函数显示的输出是

Hello, I am greeting you, test name
vaadin-bundle-62ac8b…b56c6.cache.js:4813 Element  
vaadin-bundle-62ac8b…b56c6.cache.js:4813 Logging 1 undefined

由于 element.$server 未定义,我无法获取 javascript 函数来调用视图中的greet 函数,该函数注释为@ClientCallable

@ClientCallable
public void greet(final String name) {
    System.out.println("Called from JavaScript: " + name + " \n\n\n");
}

我尝试了调用 script.js 的各种其他方法,例如使用按钮的元素调用executeJs 函数或将按钮的元素(b.getElement())作为参数传递给函数,但无济于事。

我究竟做错了什么 ?


你正在做的element.$server在您传递的元素上UI.getCurrent().getElement()。这对应于 UI 实例而不是RouteGraphicsView(我假设)有的类@ClientCallable方法。出于同样的原因,使用该按钮也不起作用。

您应该传递视图的实例,在您的情况下需要将其写为RouteGraphicsView.this因为常规的方式this指点击监听器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vaadin 将 JavaScript 流转至 Java 调用 的相关文章

随机推荐

  • .NET 代码混淆真的值得吗?

    据我所知 代码混淆其实并不难 破解 它只会推迟不可避免的事情 那么 它的目的是什么 如果有人真的想窃取您的资源 他们可以 如果有人出于无害 有用的目的需要查看您的源代码 他们就不能 您可能不应该在代码中存储任何敏感内容 因此这不应该成为问题
  • OFFSET 命令附近的语法不正确

    为什么这不起作用并给我一个 偏移命令附近的语法不正确 错误 SELECT o orderdate o orderid o empid o custid FROM Sales Orders o ORDER BY o orderdate o o
  • 实时绘制 pandas 数据框

    我是新来的matplotlib并尝试显示我通过函数 read API 从 api 下载的三个变量的最后一小时数据的实时图 数据位于带有 DateTimeIndex 的 pandas 数据框中 例如 In dframe head Out A
  • 如何获取ContainerRequest中的会话对象可以使用注释@RolesAllowed(Role_user)?

    我正在使用 App Engine 和 Jersey 构建一个应用程序 我想使用注释 RolesAllowed Role user 谁允许在请求中创建过滤器 问题是我们需要配置类SecurityContextFilter 我的目标是获得id存
  • 编译 Lua - 创建 .so 文件?

    我正在 Centos 6 5 上编译 Lua 5 2 3 编译 安装工作正常 但是 我还需要编译另一个程序的开发库 我通常会通过这样做来安装它们 yum install lua devel 问题是安装 Lua 5 1 共享库 而不是 5 2
  • 是否可以在android的上下文菜单(系统菜单)中添加一些项目

    当我输入一些文本并按住它时 上下文菜单会显示剪切 复制 选择文本等项目 有什么方法可以将我自己的自定义项目添加到此上下文菜单中吗 我不知道这件事是如何工作的 但我想应该可以在清单中注册一些东西 就像注册活动和广播一样 Thanks 欢迎任何
  • Android 房间@Relation 左加入

    假设我有两个实体 问题和答案 它们具有一对多关系 每个问题可能有 0 n 个答案 它们定义为 Entity tableName questions data class Question PrimaryKey val id Long val
  • 在 qt linux 中保存配置

    我为Linux编写了一个qt应用程序 该应用程序应该在启动时运行 我 用桌面条目做的 但我需要它更复杂 用户应该检查一个复选框 以便选择应用程序是否在启动时运行 我该如何保存他的偏好 该应用程序之前是为 Windows 编写的 并且保存在注
  • 如何更改 AlertDialog 的主题

    我想知道是否有人可以帮助我 我正在尝试创建一个自定义的 AlertDialog 为了做到这一点 我在 styles xml 中添加了以下代码行
  • 创建一个圆形的 Java Swing JFrame?

    如果可能的话如何制作一个圆形的JFrame Oracle 有一个关于这个主题的很好的教程 https docs oracle com javase tutorial uiswing misc trans shape windows html
  • 如何在 Play 2.0 (Scala) 中使用 DATABSE_URL 进行与 PostgreSQL 9.1 和 Heroku 的本地连接?

    我使用 Play 在 OSX Lion 10 7 4 上使用本地 PostgreSQL 9 1 开发了第一个 Web 应用程序 框架2 0 3 我从conf application conf 相对于应用程序目录 中定义的数据库连接开始 db
  • 如何在Windows下使用特定的server.xml启动Tomcat?

    有时我想使用特殊配置启动 Tomcat 6 而不是使用 server xml 所以我创建了另一个名为的 xml 文件server test xml 现在我想告诉tomcat使用这个配置 这是怎么做到的 我在网上搜索几乎找不到任何东西 只有这
  • R:向 Plotly 添加搜索栏

    我在这里找到了这个 stackoverflow 帖子 从浏览器中突出显示 查找散点图中的数据点 https stackoverflow com questions 42507096 highlight find data points in
  • C++ 作为标准是否禁止在各个类实例中存储成员函数?

    在 C 实现中 通常代码不存储 以任何形式 在类实例内 代码段与对象等不在同一内存空间 这意味着成员函数不会 存储 在类实例内部 但当有人问了一个问题 https stackoverflow com q 21316374 560648对此
  • 为什么 True 和 False 在 Python 3 中改为关键字

    在Python 2中 我们可以重新分配True and False 但不是None 但所有三个 True False and None 被视为内置变量 然而 在 Py3k 中 这三个都被更改为关键字the docs http docs py
  • 将 HTML 代码转换为纯文本

    我有一个像这样的字符串 Col acute gio 我怎样才能将其转换为 Col gio 无需替换所有 html 代码 System Web HttpUtility HtmlDecode Col acute gio
  • 使用 NEST 搜索 elasticsearch 索引没有结果

    我正在使用 NEST 并且向 ES 索引添加内容没有任何问题 然而 获得任何结果是另一回事 这是我的浏览器中的输出 nest testing search pretty took 0 timed out false shards total
  • 不可变位图比可变位图更快吗?

    The Bitmap class has http developer android com reference android graphics Bitmap html copy 28android graphics Bitmap Co
  • NSDateFormatter 返回意外结果

    为什么以下 iOS 4 2 代码返回两个不同的时间 NSTimeZone gmt NSTimeZone timeZoneWithAbbreviation GMT NSDateFormatter dateFormatter NSDateFor
  • Vaadin 将 JavaScript 流转至 Java 调用

    按照本教程进行操作https vaadin com blog calling java from javascript https vaadin com blog calling java from javascript我试图从 javas