Events GWTP:事件发送一次但接收(处理程序)两次

Events GWTP:事件发送一次但接收(处理程序)两次,events,gwt,gwt-platform,gwtp,Events,Gwt,Gwt Platform,Gwtp,在GWTP上,我发送了一个带有以下代码的UpdateDiagramBoxEvent,但是处理程序执行了两次。换句话说,我可以看到,sendUpdatedAgramboxEvent()只执行一次,但收到两次。我的代码中的许多其他事件也是如此。有什么不对的想法吗?我如何避免这种行为?谢谢 接收事件 UpdateDiagramBoxHandler updateDiagramBoxHandler = new UpdateDiagramBoxHandler() { @Override public

在GWTP上,我发送了一个带有以下代码的
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)
。只是包含了“注册事件处理程序”代码。似乎只有一次。谢谢。可能是在不同的情况下吗?