从JSNI方法中调用Java方法

时间:2016-04-25 01:06:48

标签: gwt

我试图从我的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”,所以我知道调用方法的方式有问题。它不能是一种静态的方法。

1 个答案:

答案 0 :(得分:0)

done回调内部,您将丢失this(现在会指向其他内容)。

您需要通过bind或本地变量(var self = this)保留它。