我在使用JSNI调用Java方法时遇到了问题:
public static native void update() /*-{
this.@app.client.local.MyPage::populate()();
}-*/;
没有错误,只是该方法没有被触发,Java方法populate()
在调用时显示警告框,不会触发。
MyPage
是一个用@Page
答案 0 :(得分: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()();
}-*/;
}