我想通过gwt事件总线发送一个对象,我不知道为什么它不起作用。GWT事件:我错过了什么?
通常,我有一个组件A创建一个弹出窗口。 A注册到弹出窗口,弹出窗口触发事件。 现在,侦听器(OtherComponent)与弹出窗口无关。当弹出窗口触发事件时,另一个组件不会捕获它。
这里是我的代码:
处理程序:
public interface MyEventHandler extends EventHandler {
public void onChanged(MyEvent event);
}
事件:
public class MyEvent extends GwtEvent<MyEventHandler> {
private static final GwtEvent.Type<MyEventHandler> TYPE = new GwtEvent.Type<MyHandler>();
private MyBean my;
public MaterielEvent(My bean) {
my = bean;
}
@Override
public com.google.gwt.event.shared.GwtEvent.Type<MyEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<MyEventHandler> getType() {
return TYPE;
}
@Override
protected void dispatch(MyEventHandler handler) {
handler.onChanged(this);
}
public MyBean getBean() {
return my;
}
}
组件:
public class OtherPanel extends Composite implements HasMyEventHandlers {
interface OtherPanelUiBinder extends UiBinder<Widget, OtherPanel> {}
private static OtherPanelUiBinder uiBinder = GWT.create(OtherPanelUiBinder.class);
public OtherPanel() {
this.addMyEventHandler(new MyEventHandler() {
@Override
public void onChanged(MyEvent event) {
NotificationManager.success("event recieved");
}
});
initWidget(uiBinder.createAndBindUi(this));
}
@Override
public HandlerRegistration addMyEventHandler(MyEventHandler handler) {
return addHandler(handler, MyEvent.getType());
}
}
调用(内另一个组件):
fireEvent(new MyEvent(myBean));
通知“收到的事件”从不会被调用。
我肯定错过了一些东西。感谢您的帮助
你能告诉周围的fireEvent调用更多的代码?你调用一个静态吗?如果没有,哪儿来的eventBus来自于你调用'fireEvent()'? – 2012-04-11 15:43:58