在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));
}
答案 0 :(得分:2)
这通常意味着您只需两次注册事件处理程序。
答案 1 :(得分:1)
这是GWTP,如果是这样,您如何注册您的活动/处理程序?我似乎记得有一个陷阱,您可以使用@ProxyEvent
或 addRegisteredHandler()
,但不能同时使用这两个,或者您将收到两次事件。
希望有所帮助。
干杯,