Events GWTP:事件发送一次但接收(处理程序)两次
在GWTP上,我发送了一个带有以下代码的Events GWTP:事件发送一次但接收(处理程序)两次,events,gwt,gwt-platform,gwtp,Events,Gwt,Gwt Platform,Gwtp,在GWTP上,我发送了一个带有以下代码的UpdateDiagramBoxEvent,但是处理程序执行了两次。换句话说,我可以看到,sendUpdatedAgramboxEvent()只执行一次,但收到两次。我的代码中的许多其他事件也是如此。有什么不对的想法吗?我如何避免这种行为?谢谢 接收事件 UpdateDiagramBoxHandler updateDiagramBoxHandler = new UpdateDiagramBoxHandler() { @Override public
UpdateDiagramBoxEvent
,但是处理程序执行了两次。换句话说,我可以看到,sendUpdatedAgramboxEvent()
只执行一次,但收到两次。我的代码中的许多其他事件也是如此。有什么不对的想法吗?我如何避免这种行为?谢谢
接收事件
UpdateDiagramBoxHandler updateDiagramBoxHandler = new UpdateDiagramBoxHandler() {
@Override
public void onUpdateDiagramBox(UpdateDiagramBoxEvent event) {
doSomething();
}
};
EventUtil.sendUpdateDiagramBoxEvent(CellTableManager.this.eventBus,
BasicConstants.EventSubscriptors.VIEW, 0,
BasicConstants.EditableTableFields.DIAGRAMTYPE,
ClientState.getCurrentDiagramType().name());
public static void sendUpdateDiagramBoxEvent(final EventBus eventBus,
final BasicConstants.EventSubscriptors recipient,
final int index, final BasicConstants.EditableTableFields field,
final String value){
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
UpdateDiagramBoxEvent updateDiagramBoxEvent =
new UpdateDiagramBoxEvent(transactionNumber, recipient,
field.toString(), value, index);
eventBus.fireEvent(updateDiagramBoxEvent);
}
});
}
发送事件
UpdateDiagramBoxHandler updateDiagramBoxHandler = new UpdateDiagramBoxHandler() {
@Override
public void onUpdateDiagramBox(UpdateDiagramBoxEvent event) {
doSomething();
}
};
EventUtil.sendUpdateDiagramBoxEvent(CellTableManager.this.eventBus,
BasicConstants.EventSubscriptors.VIEW, 0,
BasicConstants.EditableTableFields.DIAGRAMTYPE,
ClientState.getCurrentDiagramType().name());
public static void sendUpdateDiagramBoxEvent(final EventBus eventBus,
final BasicConstants.EventSubscriptors recipient,
final int index, final BasicConstants.EditableTableFields field,
final String value){
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
UpdateDiagramBoxEvent updateDiagramBoxEvent =
new UpdateDiagramBoxEvent(transactionNumber, recipient,
field.toString(), value, index);
eventBus.fireEvent(updateDiagramBoxEvent);
}
});
}
注册事件处理程序(来自MyProjectPresenter.java)
这通常意味着您只需注册两次事件处理程序。这是GWTP吗?如果是,您如何注册事件/处理程序?我似乎记得有一个陷阱,您可以使用
@ProxyEvent
或addRegisteredHandler()
但不能同时使用,否则您将收到两次事件
希望有帮助
干杯,谢谢!我们使用的是GWTP,但我们只使用addRegisteredHandler(),而且似乎只调用了一次。只包含了“注册事件处理程序”代码。我看到我正在使用一个不同的函数:registerHandler(),它来自com.gwtplatform.mvp.client.HandlerContainerImpl。这可能是原因吗?我不这么认为,但即使如此,在演示者中使用
addRegisteredHandler(UpdateDiagramBoxEvent.getType(),this)
。只是包含了“注册事件处理程序”代码。似乎只有一次。谢谢。可能是在不同的情况下吗?