我在调用 Java 方法的 JSNI 时遇到问题:
public static native void update() /*-{
this.@app.client.local.MyPage::populate()();
}-*/;
没有错误,只是该方法没有被触发,Java 方法populate()
在调用时显示一个警告框,没有触发。
MyPage
然而是一个带有注释的 Errai 页面@Page
我认为您@
误解了 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()();
}-*/;
}