【问题标题】:GWTP EventBus on Non-Presenter Class非演示者类上的 GWTP EventBus
【发布时间】:2015-11-06 17:02:58
【问题描述】:

在我的 GWTP 应用程序中,我有一个简单的 Java 类,它不是 Presenter,它只是一个类。在这个类中,我需要触发一个将从 Presenter 类中监听的事件。

GWTP 在演示者之间共享一个 EventBus。问题是我需要从这个 EventBus 的外部类中触发事件,以便演示者能够收听它。

我进行了研究,但到目前为止,我还没有遇到与这个外部类共享 GWTP 的 EventBus 的方法(除了从任何随机演示者内部,这是不正确的)。

正如我在这里看到的,注入的方法不起作用。 有什么想法吗?

如果需要,我会分享一些代码。谢谢!

这是我的班级:

public class MyClass {

private static MyClass INSTANCE;

public static MyClass singleton() {

    if (INSTANCE == null) {
        INSTANCE = new MyClass();
    }
    return INSTANCE;
}

private MyClass() {
}
}

还有

@Inject EventBus eventBus

不起作用。当我调用 eventBus.fireEvent() 时,eventBus 未定义。

【问题讨论】:

  • 你的班级怎么样?您可以将EventBus 注入到您的自定义类中。
  • @Ümit 我将编辑问题并发布一些代码。

标签: java events gwt gwtp


【解决方案1】:

您应该重写您的类并使用 Gin 将 MyClass 绑定为带有 bind(MyClass.class).in(Singleton.class) 的 Singleton 并在您需要的地方注入 MyClass。您的 MyClass 类可能如下所示:

public class MyClass {
    @Inject
    MyClass(EventBus eventBus) {
        this.eventBus = eventBus;   
    }
}

如果你真的想做自己的单例,那么你也可以使用来自 Gin 模块的静态注入:requestStaticInjection(MyClass.class)。

public class MyClass {
    @Inject
    private static EventBus eventBus;
    private static MyClass INSTANCE;

    public static MyClass singleton() {
        if (INSTANCE == null) {
            INSTANCE = new MyClass();
        }
        return INSTANCE;
    }

    private MyClass() {
    }
}

【讨论】:

  • 感谢您的建议。我会尽快尝试,然后我会发布结果。
  • 非常感谢。它工作得很好,解决了我的问题。由于我在 GWT 插件 2.7.0 中使用 GWTP,它没有附带 GinJector 类,但有一个先加载的通用演示器,所以我把它放在那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多