0

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

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

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

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

4

1 回答 1

3

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

您正在调用populate()实例的方法this,但您的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()();
  }-*/;
}
于 2013-06-19T06:39:09.120 回答