2011-10-13 115 views
0

我们有一个flex应用程序,它连接到处理验证的代理服务器。如果身份验证超时,代理服务器将返回一个json格式的错误字符串。我想要做的是检查每个URLRequest响应,并检查是否有错误消息并将其显示在Flex客户端中,然后重定向回登录屏幕。将事件侦听器附加到所有URLRequest的

所以我想知道是否有可能创建一个全球时尚的所有URLRequests事件监听器。无需搜索项目并为每个URLRequest添加一些方法。任何想法,如果这是可能的?

回答

2

除非您只使用一项服务,否则无法设置全局URLRequest处理程序。如果我是你,我会更多地考虑使用委托来正确构建应用程序,并始终通过整个应用程序中使用的特定服务来检查结果。

+0

不幸的是,它可能并不让人惊讶地发现它是一个大型的继承外包代码混杂。重新设计几乎没有问题 – Okeydoke

+0

然后你运气不好。 –

+2

@RueTheWhirled你将不得不改变他们的一切......也许你应该利用这个机会来重构一些代码,并引入一个委托? –

2

J_A_X有一些很好的建议,但我会更进一步。让我根据您提供的有限信息做出一些假设。

  1. 服务分散在您的应用程序中意味着它们实际上嵌入在多个视图中。
  2. 如果您的服务都可以由同一个处理程序处理,那么从理论上讲,您有一项服务可以复制多次。

尽管您在Adobe示例中看到了他们的新服务生成代码,但直接从视图调用服务是非常糟糕的做法,部分原因是由于您看到的问题 - 您可能会收获很多的相同服务代码的副本散布在整个应用程序中。根据你的应用程序交织在一起的程度(相信我,我继承了一些非常讨厌的东西,所以我知道这可能说起来容易做起来难),你可能会发现最简单的方法是去掉所有这些各种各样的服务,并通过让所有视图发送一个冒泡事件来取代它们,这些事件被捕获到顶层。在顶层,您通过致电一个您的服务实例来响应该事件,这又是在一个位置处理的。

您可能会也可能不会选择在代理中包装单个服务,但是一旦您将应用程序以服务与视图分离的方式进行了架构,您可以随时做出该选择。

0

你能扩展类并在对象的构造函数中添加一个事件侦听器吗?我不喜欢这种方法,但它可以工作。

你只需要搜索/替换整个项目。

相关问题