我正在使用Vaadin向导插件,并且遇到以下情况:
当用户仅按前进/后退步骤时,没有问题。但是,如果用户想要转到上一步,则我无意中将Button Click侦听器添加到了同一事件(这是我的假设。我已经调试了程序,发现如果用户转到上一页,则该事件发射两次)
在进入下一页之前,我曾尝试删除事件侦听器,但是,我找不到一次删除所有事件侦听器的方法。另外,我不知道从何处删除它们,因为在Vaadin向导中找不到用户移至下一页之前执行的功能。
我正在关注以下示例:
是否有一种方法可以删除所有ClickListener?
如果存在,我应该在哪里添加该功能?
此外,我也在使用ListDataProvider
和NativeSelect
组件。
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() {}
方法设置点击监听器
答案 0 :(得分:3)
在Vaadin 8中,您需要使用Registration interface删除侦听器。
添加侦听器时,它将返回注册:
final Registration registration = select.addValueChangeListener(this::doSomething);
然后将其删除:
registration.remove();