在 GWT 异步回调中,如何在 onSuccess 中处理相同的返回类型?
Posted
技术标签:
【中文标题】在 GWT 异步回调中,如何在 onSuccess 中处理相同的返回类型?【英文标题】:In a GWT asynchronous callback, how can I handle the same return types in onSuccess? 【发布时间】:2018-04-17 11:35:30 【问题描述】:如果我在服务中有两个 boolean
方法,我如何确保 onSuccess
方法处理返回 boolean
的正确方法?
例如,在onSuccess
方法中我说:
if (result instanceof Boolean) ;
有没有一种方法可以区分返回布尔值的服务方法?否则无法保证在我的 onSuccess 方法中执行正确的代码,就好像结果是 boolean
,如果调用了我的两个 boolean
服务方法中的任何一个,它就会执行。
这是我面临的问题的一个例子:
private class DefaultCallback implements AsyncCallback
@Override
public void onFailure(Throwable caught)
mainGUI.getServerResponseLabel().setStyleName("serverResponseLabelError");
mainGUI.getServerResponseLabel().sethtml("An error occurred while "
+ "attempting to contact the server. Please check your network " + "connection and try again.");
@Override
public void onSuccess(Object result)
if (result instanceof Boolean)
//
I have two methods that return a boolean here,
so this block will execute no matter which one is called;
for one method I want to display a GUI windows saying "Upload complete",
and for another, create an excel spreadsheet. But the boolean value of one method won't be relevant to the other
【问题讨论】:
你能提供和例子吗?我不明白的是你怎么能忽略你正在调用的两种方法中的哪一种...... 在 AsyncCallBack.onSuccess 方法中,只要异步回调成功,它就会调用结果 - 但该结果没有任何关于哪个服务方法发送它的信息,至于我知道。 使用 RPC,你给方法一个 asyncCallback 参数,这个特定的调用将在成功或失败时被调用。那怎么会错呢? 好的。将尝试提供一个示例。 提供的例子,希望我真的有道理! 【参考方案1】:有很多灰色区域,但请耐心等待: 在SomethingRPCService.java中
boolean isA();
boolean isB();
在SomethingRPCServiceAsync.java中
void isA(AsyncCallback<Boolean> callback);
void isB(AsyncCallback<Boolean> callback);
在你的活动中
somethingService.isA(new AsyncCallback<Boolean>()
@Override
public void onSuccessImpl(final Boolean response)
//will be executed on success of THIS call
@Override
public void onFailure(final Throwable caught)
// not relevant here
);
somethingService.isB(new AsyncCallback<Boolean>()
@Override
public void onSuccessImpl(final Boolean response)
//will be executed on success of THIS call
@Override
public void onFailure(final Throwable caught)
// not relevant here
);
您可以(必须?)实际输入您的回报
编辑:用你的例子,我看得好一点;你的回调不应该是一样的,你应该覆盖它所以代码是不一样的,因为它不是
【讨论】:
太棒了。我遵循了一个 YT 教程,展示了一种构建 GWT 应用程序的特定方法,但我从未想过要这样处理它。我将创建一个实现 AsyncCallback 的自定义类,并在每个方法的参数中实例化该类,而不是您的方式。谢谢!!! 我的荣幸^^。不要犹豫,在您的自定义类中定义您的onFailure
方法,因此您只需覆盖onSuccess
(当然,如果适用!)
例如this.serviceMethodA.getInputFile(new DefaultCallback());
在异步接口中你有两次isA
。第二个应该是isB
。只是一个错字,但是.... ;)
+1 now ;) 作为对您答案的补充,很高兴了解method signature
。 @E.Rowlands,例如阅读 this。以上是关于在 GWT 异步回调中,如何在 onSuccess 中处理相同的返回类型?的主要内容,如果未能解决你的问题,请参考以下文章
Ext-GWT TreeGrid 间接调用了 GWT-RPC 回调?为啥?