是否可以为每个 GWT RPC 调用无缝显示一个 ajax 微调器?

Posted

技术标签:

【中文标题】是否可以为每个 GWT RPC 调用无缝显示一个 ajax 微调器?【英文标题】:Is it possible to seamlessly display an ajax spinner for every GWT RPC call? 【发布时间】:2009-12-03 00:10:30 【问题描述】:

我有一个大量使用 RPC 调用的 GWT 应用程序。每当通话进行时,我想显示一个微调器图标。显示图标很容易,但我想在一个地方无缝地做到这一点,所以我不必为每次调用显式隐藏和显示图标。

我想我正在寻找类似于 jQuery 的 ajaxStart 和 ajaxStop 事件的东西。

以前有人做过这样的事吗?

干杯 锡

【问题讨论】:

【参考方案1】:

您为什么不在 AsyncCallback 的具体实现中实现此行为,并将所有 AsyncCallback 子类化。或者,您可以使用装饰器模式,在其中使用常规 AsyncCallback 并用另一个显示/隐藏弹出窗口的模式来装饰它。

或者,如果您使用命令模式,您可以将这些事件添加到您的命令模式实现中,并且您可以注册一个处理程序,在每次发送/接收请求时显示/隐藏弹出窗口。

【讨论】:

我认为装饰器模式是实现这一点的最佳方式。但我希望将其视为 GWT 在某些更高版本中提供的标准功能。 我想我两者都需要。处理微调器停止的 AsyncCallback 基类以及每个异步接口的装饰器类。问题是,我有很多不同的异步接口,尝试单独包装它们会很麻烦。关于我如何一般地做到这一点的任何想法?在标准 java 中,AOP 可以解决这种问题,但我不确定是否有 GWT 等价物。【参考方案2】:

回应 cmets 认为装饰器不够用。

abstract class AbstractAsyncCallback <T> implements AsyncCallaback <T>

 public AbstractAsyncCallback ()
 
  Foo.showIcon();
 

 @Override public void success (T t)
 
  doSuccess(t);
  Foo.hideIcon();
 

 @Override public void failure ()
 
  doFailure();
  Foo.hideIcon();
 

 public abstract void doSuccess (T t);

 public abstract void doFailure (T t);
;

【讨论】:

以上是关于是否可以为每个 GWT RPC 调用无缝显示一个 ajax 微调器?的主要内容,如果未能解决你的问题,请参考以下文章

GWT 使 RPC 阻塞

是否可以在 smartgwt 中使用 gwt rpc?

调用 RPC 时出错 - GWT,404 服务器响应状态为 404(未找到)

GWT Java rpc 调用工作;但是,替换 GWTBootstrap - rpc 调用不起作用

如何使用 GWT-RPC 以外的方式访问 GWT servlet?

GWT-Rpc如何返回文件让浏览器弹出下载对话框