0

在 GWTP 上,我UpdateDiagramBoxEvent使用下面的代码发送一个,但处理程序执行了两次。换句话说,我可以看到sendUpdateDiagramBoxEvent()只执行了一次,但收到了两次。我的代码上的许多其他事件也发生了同样的情况。关于什么是错误的任何想法,以及如何避免这种行为?谢谢。

接收事件

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)

@Inject PlaceManager placeManager;
@Override
protected void onBind() {
   [...]                      
       registerHandler(getEventBus().addHandler(UpdateDiagramBoxEvent.getType(),
       updateDiagramBoxHandler));
}
4

3 回答 3

1

这通常意味着您只需注册您的事件处理程序两次。

于 2012-11-13T12:28:46.810 回答
0

这是 GWTP,如果是,您如何注册您的事件/处理程序?我似乎记得有一个陷阱,您可以使用其中一个@ProxyEvent addRegisteredHandler()两个,但不能同时使用,否则您将收到两次事件。

希望有帮助。

干杯,

于 2012-11-13T12:30:17.167 回答
0

或者有问题的 bean 可能不是单例的。

于 2022-01-13T00:16:36.700 回答