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

时间:2012-11-13 12:22:34

标签: events gwt gwt-platform gwtp

在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));
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

希望有所帮助。

干杯,