Vaadin @UIScope上的网格注释视图奇怪的行为

Vaadin @UIScope上的网格注释视图奇怪的行为,vaadin,vaadin-flow,vaadin-grid,Vaadin,Vaadin Flow,Vaadin Grid,Vaadin 19.0.6,弹簧靴。例如,在两个不同的浏览器或选项卡中打开带有@UIScope注释的相同视图。然后在window1中请求网格的数据。现在从window1中的视图导航,并为window2中的网格请求不同的数据。返回到window1中的视图,您将在网格中看到与window2中相同的数据。我还不明白,如果你有@UIScope,这怎么会发生?这个范围仅限于浏览器选项卡。某种数据提供者共享?我找到了原因。很容易混淆哪个bean保存在UiScope中。例如,如果您有带有服务bean的Data

Vaadin 19.0.6,弹簧靴。例如,在两个不同的浏览器或选项卡中打开带有@UIScope注释的相同视图。然后在window1中请求网格的数据。现在从window1中的视图导航,并为window2中的网格请求不同的数据。返回到window1中的视图,您将在网格中看到与window2中相同的数据。我还不明白,如果你有@UIScope,这怎么会发生?这个范围仅限于浏览器选项卡。某种数据提供者共享?

我找到了原因。很容易混淆哪个bean保存在UiScope中。例如,如果您有带有服务bean的DataProvider,那么每个视图的服务bean都不是唯一的。您必须将所有每视图逻辑移到DataProvider中。这是我的错误


附加说明。如果您从视图bean设置了服务bean的一些属性,那么这些属性是全局设置的,当您返回到某个视图时,无论在何处-使用相同服务的选项卡、窗口、浏览器、会话,您都将获得最后一个全局服务状态。我希望这会对某人有所帮助。

我找到了原因。很容易混淆哪个bean保存在UiScope中。例如,如果您有带有服务bean的DataProvider,那么每个视图的服务bean都不是唯一的。您必须将所有每视图逻辑移到DataProvider中。这是我的错误


附加说明。如果您从视图bean设置了服务bean的一些属性,那么这些属性是全局设置的,当您返回到某个视图时,无论在何处-使用相同服务的选项卡、窗口、浏览器、会话,您都将获得最后一个全局服务状态。我希望这会对其他人有所帮助。

UiScope只是一个浏览器选项卡,如果不刷新页面,每个选项卡都有一个UI。也许您正在使用一个没有范围注释的单例Springbean@组件。如果不是这样,也许您可以发布一个代码示例。@Jean ChristopherGueriaud服务bean和DataProvider bean都没有范围注释和组件注释。我尝试用UiScope注释标记服务和数据提供者,但没有成功。我已经在下面的答案中描述了我的情况和解决方案。是的。正如我所说,没有任何代码很难猜测。在我看来,您不应该在服务层中具有视图或特定于UI的功能,因为您的服务层大部分时间都是作为一个单体共享的。很好,你自己找到了一个解决方案。UiScope只是一个浏览器选项卡。如果不刷新页面,每个选项卡都有一个UI。也许您正在使用一个没有范围注释的单例Springbean@组件。如果不是这样,也许您可以发布一个代码示例。@Jean ChristopherGueriaud服务bean和DataProvider bean都没有范围注释和组件注释。我尝试用UiScope注释标记服务和数据提供者,但没有成功。我已经在下面的答案中描述了我的情况和解决方案。是的。正如我所说,没有任何代码很难猜测。在我看来,您不应该在服务层中具有视图或特定于UI的功能,因为您的服务层大部分时间都是作为一个单体共享的。很好,你自己找到了解决办法。