【问题标题】:Multiple, asynchronous ajax calls mix-up in Play's routingPlay 路由中的多个异步 ajax 调用混淆
【发布时间】:2015-04-07 23:03:08
【问题描述】:

我有点迷路了。当涉及多个并行 ajax 调用时,我最近在我的应用程序中遇到了奇怪的行为。他们被 Play 搞混了。

更准确地说:我有两个 ajax 调用 A 和 B 大约发送。同时在客户端(使用 jQuery ajax())。在我的 Play 应用程序中,呼叫 A 应由操作 1 处理(并且自几天前以来处理没有任何问题)。以同样的方式呼叫 B 应由操作 2 处理。

实际发生的情况是,有时确实调用 A 由操作 1 处理,B 由 2 处理,但有时 A 和 B 都由 1 处理,或者在其他时候 A 和 B 都由 2 处理。我不能找到任何模式。当然,这种行为完全让我的客户端感到困惑。

我现在有点迷路了。我没有更改路由中的任何内容,也没有更改任何其他主要代码 - 我主要处理 JavaScript 和 GUI。所以我想在这里问一下是否有人曾经在 Play 上经历过类似的事情。如果有任何帮助,我可以发布代码(我必须稍微清理一下)。

【问题讨论】:

    标签: playframework-2.0


    【解决方案1】:

    我找到了原因——虽然我真的不明白为什么会这样。原因是来自动作组合类的 Google Guice 插件的类注释 @Singleton

    @Singleton
    public class AuthenticationAction extends Action<Authenticated> {
    
    @With(AuthenticationAction.class)
    @Target({ ElementType.TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Authenticated {
    }
    
    private final UserDao userDao;
    
    @Inject
    AuthenticationAction(UserDao userService) {
        this.userDao = userService;
    }
    ...
    

    在我删除 @Singleton 注释后,它再次正常工作,不再有 ajax 调用混淆。 :)

    这仍然是一种很奇怪的行为。

    【讨论】:

      猜你喜欢
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2015-11-06
      相关资源
      最近更新 更多