非Presenter类上的GWTP EventBus

时间:2015-11-06 17:02:58

标签: java events gwt gwtp

在我的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是未定义

1 个答案:

答案 0 :(得分:1)

您应该重写您的类并使用Gi​​n将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() {
    }
}