Events GWTP:事件和嵌套演示者
我对GWTP中的事件有一些问题 我有一个扩展TabContainerPresenter的MainPresenter。 此演示者链接到一个主视图,该主视图包含一些ui组件+一些com.gwtplatform.mvp.client.Tab:HomeTab、ContactTab等 MainPresenter应该对某些事件“MyEvent”作出反应 MyEvent有一个相应的MyHandler,它是按照这些良好实践创建的 当我从MainView的ui组件触发事件时,如下所示:Events GWTP:事件和嵌套演示者,events,nested,gwtp,presenter,Events,Nested,Gwtp,Presenter,我对GWTP中的事件有一些问题 我有一个扩展TabContainerPresenter的MainPresenter。 此演示者链接到一个主视图,该主视图包含一些ui组件+一些com.gwtplatform.mvp.client.Tab:HomeTab、ContactTab等 MainPresenter应该对某些事件“MyEvent”作出反应 MyEvent有一个相应的MyHandler,它是按照这些良好实践创建的 当我从MainView的ui组件触发事件时,如下所示: MyEvent.fire(
MyEvent.fire(this, new MyEventContext(..));
我在MainPresenter中正确捕获了事件
但是,当我在其中一个“Tab Presenter”中执行完全相同的操作时,事件不会被主Presenter捕获
例如,在HomePresenter中,它是MainPresenter的“HomeTab”,当我这样做时
MyEvent.fire(this, new MyEventContext(..));
我可以从HomePresenter捕捉事件,但不能从MainPresenter捕捉事件
有什么想法吗?确保你尊重这些规则:
com.google.web.bindery.event.shared.EventBus
(而不是com.google.gwt.event.shared.EventBus
)addRegisteredHandler
方法在onBind
生命周期方法中注册到事件:
@Override
protected void onBind() {
super.onBind();
addRegisteredHandler(MyEvent.getType(), this);
}
我不知道你犯了什么特别的错误。为了帮助您,我制作了一个示例,显示事件可以从选项卡式演示者发送到选项卡式容器演示者。克隆此项目,然后前往#!设定值。您将看到两个“Fire true”和“Fire false”按钮,它们将触发ApplicationPresenter将捕获的事件。首先,让我感谢您提供了这一令人敬畏的POC,它是了解出错原因的极好基础。我发现我实际上并没有很好地使用GWTP 根本问题是我有两个不同的事件总线 我试着看了
Log.info("eventBus: "+eventBus)
在主演示程序和主演示程序中。日志显示它们没有相同的哈希代码
这是因为有时,我通过以下操作直接访问EventBus:
EventBus.Util.getInstance();
鉴于placeManager实例化为:
DelayedBindRegistry.bind(GWT.create(MyInjector.class))
您使用的是什么版本?首先,让我感谢您提供了这个很棒的POC,它是了解问题所在的极好基础。