java - 从 JSNI 调用 Java 函数

标签 java gwt errai

我在 JSNI 调用 Java 方法时遇到问题:

public static native void update() /*-{
    this.@app.client.local.MyPage::populate()();
}-*/;

没有错误,只是该方法没有被触发,调用时显示警报框的 Java 方法 populate() 没有触发。

MyPage 然而是一个用 @Page 注释的 Errai 页面

最佳答案

我认为您误解了 JSNI 中 @ 符号前面的实例的含义。

您正在调用实例 this 的方法 populate(),但您的 update() 方法是静态的。

您可以将 populate() 定义为静态并以静态方式调用它。

package app.client.local;
class MyPage {

  public static native void update() /*-{
    @app.client.local.MyPage::populate()();
  }-*/;

  public static void populate() {
  }
}

或者您可以将具有该方法的类的实例作为参数传递给您的 jsni 代码:

package app.client.local;

class MyClass {
  public void populate() {
  }
}

class MyPage {
  public static native void update(MyClass instance) /*-{
    instance.@app.client.local.MyClass::populate()();
  }-*/;
}

关于java - 从 JSNI 调用 Java 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17181899/

相关文章:

java - 如何扩展cardView以显示带有下降动画的android中的隐藏元素?

gwt - Google Maps API v3 - InfoWindow 内的按钮和文本框?

java - Errai - 独立的客户端和服务器代码

java - 如何使用 JavaScript 覆盖类型 (GWT) 包装回调?

JBoss Errai,我应该用它替换我所有的 GWT-RPC 客户端调用吗?

java - Errai JAX-RS - 未找到用于 POST 的资源方法,返回带有 Allow header 的 405

java - 如何从代码而不是从我的 application-dev.yml、application-prod.yml 初始化属性

java - HIbernate 多对多与 self 实体使用注释

java - JDBC & 死锁避免题(基础)

java - GWT - 在发送之前序列化 JSON 中的 POST 参数