0

GWTP でUpdateDiagramBoxEvent以下のコードを送信していますが、ハンドラーが 2 回実行されます。つまり、 はsendUpdateDiagramBoxEvent()1 回しか実行されていませんが、2 回受信されていることがわかります。私のコードの他の多くのイベントでも同じことが起こっています。何が悪いのか、どうすればこの動作を回避できますか? ありがとう。

イベントを受け取る

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

これは通常、イベント ハンドラーを 2 回登録しただけであることを意味します。

于 2012-11-13T12:28:46.810 に答える
0

これは GWTP ですか?もしそうなら、イベント/ハンドラーをどのように登録していますか? @ProxyEvent どちらか addRegisteredHandler()一方を使用することも、両方を使用することもできず、イベントを 2 回受け取るという落とし穴があることを思い出すようです。

それが役立つことを願っています。

乾杯、

于 2012-11-13T12:30:17.167 に答える