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) が String を受け取ります。汎用コールバック マネージャーを構築する場合は、カスタマイズされたメソッドが適切な Type 処理を処理する必要があります。また、呼び出し時にコールバック メソッドを実装する必要がないことにも注意してください。