我在 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/