2013-12-05 2 views
3

Я хочу передать успешную и отказоустойчивую функцию Java в JSNI-метод.Передача функции обратного вызова Java методу JSNI?

Это то, что я получаю до сих пор, но оно не работает. Как я могу это исправить?

package c; 

public class A { 

test(new Callback<String, String>() { 

    @Override 
    public void onFailure(String reason) { 
     Window.alert("fail"); 
    } 

    @Override 
    public void onSuccess(String result) { 
     Window.alert("suc"); 
    } 
}); 


native void test(Callback<String, String> callback) /*-{ 

    var callback = $entry(function(event) { 
    [email protected]::onSuccess(Ljava/lang/String;)("success!"); 
    }); 

}-*/; 

} 

ответ

5

Вы можете вызывать методы обратного вызова следующим образом:

native void test(Callback<String, String> callback) /*-{ 
    [email protected]::onSuccess(Ljava/lang/Object;)("success!"); 
}-*/; 
+0

делает это должно работать для обратного вызова тоже? Это возвращает мне исключение класса, когда я пытаюсь использовать возвращаемое целое, преобразованное в int с .intValue() –

+0

Я обнаружил, что для целочисленного значения Callback это должно использоваться как callback. @ Com.google. gwt.core.client.Callback :: OnSuccess (Ljava/языки/объекта;) (@ java.lang.Integer :: valueOf (Ljava/языки/String;) ("1")); –

+0

Будет ли вызвано onFailure() в этом случае? –