有沒有辦法在GWT應用程序的客戶端調用自定義的Aysnc回調函數?有沒有辦法在GWT應用程序的客戶端調用自定義的Aysnc回調函數?
按我的關心,我需要致電客戶端,而不是默認的AsyncCallback功能用戶自己定製的回調函數..
是有可能.....
有沒有辦法在GWT應用程序的客戶端調用自定義的Aysnc回調函數?有沒有辦法在GWT應用程序的客戶端調用自定義的Aysnc回調函數?
按我的關心,我需要致電客戶端,而不是默認的AsyncCallback功能用戶自己定製的回調函數..
是有可能.....
是的,你可以像這樣
import com.google.gwt.user.client.rpc.AsyncCallback;
public interface MycustomisedCallBack extends AsyncCallback<T> {
@Override
public void onFailure(Throwable caught);
@Override
public void onSuccess(T result);
public void onmyMethod();
}
並將您的MycustomisedCallBack
傳遞給RPC。
rpcService.rpcMethod(new MycustomisedCallBack() {
@Override
public void onmyMethod() {
// TODO Auto-generated method stub
}
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(T result) {
};
});
首先,你需要創建你自己定製的AsyncCallback類,例如:
import com.google.gwt.user.client.rpc.AsyncCallback;
public class MyAsyncCallback<T> implements AsyncCallback<T> {
public void onFailure(Throwable arg0) {
// default onFailure method, invoking your method
myOnFailure(arg0);
}
private void myOnFailure(Throwable arg0) {
// Your code here
}
public void onSuccess(T arg0) {
// default onSuccess method invoking your method
myOnSuccess (arg0);
}
private void myOnSuccess(T arg0) {
// Your code here
}
}
這個類將接收來自服務的任何結果類型被調用,委託了的onSuccess和電話onFailure方法到您自己的方法(myOnSuccess和myOnFailure),您可以在其中放置代碼。
下一步是使用新的MyAsyncCallback類來調用rpc服務。例如:
myService.sendString("foo", new MyAsyncCallback<String>());
在這個例子中,被調用的方法(sendString)接收一個字符串,如果你想建立一個通用的回調經理您的自定義方法必須處理正確的類型處理。另請注意,在調用時您不需要實現回調方法。