有没有办法在GWT应用程序的客户端调用自定义的Aysnc回调函数?
根据我的关注,我需要在客户端调用我的自定义回调函数,而不是默认的AsyncCallback函数..
有可能......
答案 0 :(得分:2)
是的,你可以这样做
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) {
};
});
答案 1 :(得分:-1)
首先,您需要创建自己的自定义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处理。另请注意,您不需要在进行调用时实现回调方法。