gpt4 book ai didi

java - 如何确定 Vaadin 8 中 UI 中的组件是否已更新

转载 作者:行者123 更新时间:2023-12-02 12:53:29 25 4
gpt4 key购买 nike

在基于 Vaadin 8 的应用程序中,我想实现一个删除所有字段值的命令。我已经使用 Binder 完成了此操作。当用户激活命令时,将创建一个新的 Bean。

    @Override public void menuSelected(MenuBar.MenuItem selectedItem) {

controller.createNewBean();
Page.getCurrent().reload();

}

我想向用户显示一个消息框,警告如果继续操作,所有组件的所有值都将丢失。我用的是TabView,组件比较多
我只想在用户更改了至少一个组件的值时才显示此消息。我想知道 Vaadin 是否有类似 UI.getCurrent().isDirty() 或其他机制来确定用户是否已向组件输入新值?

感谢帮助

最佳答案

我发现最有效的方法是向绑定(bind)器注册一个新的监听器,以获取组件值的任何更改的通知。

在此监听器中,我使用一个原子整数,每次更改都会增加该整数。随后,使用这个原子整数,我决定用户是否已触及任何字段。

并非如此,这不会检测更改,但会检测修改(例如,用户可能多次更改字段值,但最终将该值设置为原始值)。

AtomicInteger counter = new AtomicInteger();
binder.addValueChangeListener((HasValue.ValueChangeListener<Object>) event -> counter.incrementAndGet());

确保在需要时重置计数器(例如在保存时)。

关于java - 如何确定 Vaadin 8 中 UI 中的组件是否已更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44524567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com