Vaadin向导插件事件触发两次

时间:2019-03-17 19:27:45

标签: java events vaadin

我正在使用Vaadin向导插件,并且遇到以下情况:

当用户仅按前进/后退步骤时,没有问题。但是,如果用户想要转到上一步,则我无意中将Button Click侦听器添加到了同一事件(这是我的假设。我已经调试了程序,发现如果用户转到上一页,则该事件发射两次)

在进入下一页之前,我曾尝试删除事件侦听器,但是,我找不到一次删除所有事件侦听器的方法。另外,我不知道从何处删除它们,因为在Vaadin向导中找不到用户移至下一页之前执行的功能。

我正在关注以下示例:

https://github.com/tehapo/WizardsForVaadin/tree/master/wizards-for-vaadin-demo/src/main/java/org/vaadin/teemu/wizards

是否有一种方法可以删除所有ClickListener?

如果存在,我应该在哪里添加该功能?

此外,我也在使用ListDataProviderNativeSelect组件。

NativeSelect具有HasValue.ValueChangeListener<String>侦听器,在默认实现中,我找不到可以使用的方法:

NativeSelect<String> select = new NativeSelect<>("List");

select.addValueChangeListener(new HasValue.ValueChangeListener<String>() {
   // some overwritten valuechange method
}

select.removeValueChangeListener(); // This does not exist

我正在通过public Component getContent() {}方法设置点击监听器

1 个答案:

答案 0 :(得分:3)

在Vaadin 8中,您需要使用Registration interface删除侦听器。

添加侦听器时,它将返回注册:

final Registration registration = select.addValueChangeListener(this::doSomething);

然后将其删除:

registration.remove();