是否可以为每个 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 微调器?的主要内容,如果未能解决你的问题,请参考以下文章
调用 RPC 时出错 - GWT,404 服务器响应状态为 404(未找到)
GWT Java rpc 调用工作;但是,替换 GWTBootstrap - rpc 调用不起作用