gpt4 book ai didi

java - Vaadin Flow 恢复/撤消值更改,无需再次触发监听器

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

(使用 Vaadin 18)

我在组合框中有一个值更改监听器,它打开一个确认对话框,允许用户确认更改。因为这是在值更改监听器内,所以从技术上讲该值已经发生了更改。因此,当他们选择“否”时,我需要恢复该值。除了手动设置值之外,API 中似乎没有任何部分可以执行此操作。

但是当通过 setValue(...) 恢复时,监听器会再次触发。我需要阻止它再次发射。目前,我能够做到这一点的唯一方法是使用额外的“ignoreNextChange” boolean 变量,这可以防止逻辑再次运行。有没有更简单的方法来做到这一点?无论如何,我没有看到添加一个在值更改之前触发的监听器。

我不能简单地忽略所有非客户端更改,因为这会破坏 Binder 。并且从监听器内部更改监听器注册将不起作用,因为我还需要将其添加回来,这无论如何都会导致它触发。

最佳答案

您的假设是正确的,您无法阻止传播在值更改处理程序内进行更改(它是在事后发生的)。

您的主要选择是:

  • 您仅对“人为”更改(来自客户端)使用react。看 isFromClient inside the`ValueChangeEvent

  • 或者将 UI 与操作分离(为用户提供一些 UI 来请求改变,再次询问,然后进行改变)——这可以通过一些方法来完成方法。一种方法是编写自己的字段来包装组合框,只有在确认选择后才触发更改。

关于java - Vaadin Flow 恢复/撤消值更改,无需再次触发监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67921231/

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