我试图从我的JSNI方法中调用java方法。我没有收到任何类型的错误,但Window.alert()
永远不会被调用。
package com.mywebsite.myapp.client;
public class MyApp implements EntryPoint(){
/// Other stuff....
public native void getToServer(String trainerName)/*-{
$wnd.$.get( "http://testdastuff.dev/trainerstats", { trainer: trainerName} )
.fail(function() {
$wnd.console.log("error");
})
.done(function( data ) {
if(data == "noData"){
alert("NO DATA");
this.@com.mywebsite.myapp.client.MyApp::testJSNI()();
}
});
}-*/;
public void testJSNI(){
Window.alert("Working");
}
}
警告“NO DATA”,所以我知道调用方法的方式有问题。它不能是一种静态的方法。
答案 0 :(得分:0)
在done
回调内部,您将丢失this
(现在会指向其他内容)。
您需要通过bind
或本地变量(var self = this
)保留它。