2013-11-11 1 views
4

Я хочу вызвать метод Java test() из переменной JSNI successHandler(). Тем не менее, я получаю ошибкуВызвать метод Java из JSNI

[ERROR] - Line 110: Missing qualifier on instance method 'com.gw.myProject.client.presenter.payments.PaymentProgramPresenter.test' 

Исходный код:

public static native void purchase(String token) /*-{ 

     var successHandler = function(status){ // Success handler 
     return @com.gw.myProject.client.presenter.payments.PaymentProgramPresenter::test()(); 
     } 
     var failureHandler = function(status){ // Failure handler 
     // $wnd.alert('testing'); 
     } 

     $doc.purchaseAction(token, successHandler, failureHandler); 
    }-*/; 

    public void test() { 
     this.onHide(); 
    } 

ответ

5

test() Ваш не статична. Поэтому вам нужно будет сделать его статическим или указать экземпляр или сделать покупку нестатической.

(Эта ошибка является версией GWT из "Cannot make a static reference to the non-static method methodName() from the type TypeName")

public native void purchase(String token) /*-{ 

    var instance = this; 

    var successHandler = function(status){ // Success handler 
    return [email protected]ramPresenter::test()(); 
    } 
    var failureHandler = function(status){ // Failure handler 
    // $wnd.alert('testing'); 
    } 

    $doc.purchaseAction(token, successHandler, failureHandler); 
}-*/; 

public void test() { 
    this.onHide(); 
} 

Вы можете найти реальный хороший учебник по gwtproject.org

еще один совет. При создании JavaScript обратных вызовов внутри JSNI, завернуть их с ванной $ ввода() - функция:

$doc.purchaseAction(token,$entry(successHandler), $entry(failureHandler)); 

Это даст возможность GWT uncaughtExceptionHandler