Vaadin14:在页面刷新时删除广播注册
我按照 Vaadin 教程(创建协作视图)来广播事件并注册它们。
Registration eventRegistration;
@Override
protected void onAttach(AttachEvent attachEvent) {
log.debug("In attach...");
UI ui = attachEvent.getUI();
eventRegistration= Broadcaster.register(
"eventName",
message -> ui.access(() -> {
log.debug("Request to refresh grid...");
presenter.refreshGrid();
ui.push();
}));
}
@Override
protected void onDetach(DetachEvent detachEvent) {
log.debug("In detach...");
if(eventRegistration != null) {
eventRegistration.remove();
eventRegistration = null;
}
}
一切正常,除了刷新页面时,onDetach()不执行 中的逻辑。但是,刷新后,您将进入该onAttach()方法。因此,您实际上将注册几个“相同”的侦听器,而无需删除前一个侦听器,并且实际上获得了两倍的侦听器。例如onDetach(),仅当您转到另一个菜单项时才能访问该方法。
您可以在下面找到示例日志。
Vaadin 推荐的在刷新之前/期间删除这些侦听器的方法是什么?