【问题标题】:Grid on @UIScope annotated view strange behavior@UIScope 上的网格注释视图奇怪的行为
【发布时间】:2021-05-07 18:08:12
【问题描述】:

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

【问题讨论】:

  • UiScope 只是一个“浏览器”选项卡(如果不刷新页面,每个选项卡都有一个 UI)。也许您正在使用单例 Spring Bean(没有范围注释的 @Component )。如果不是这样,也许您可​​以发布代码示例。
  • @Jean-ChristopheGueriaud Service bean 和 DataProvider bean 没有 Scope 注释和 Component 注释。我试图用 UiScope 注释标记 Service 和 DataProvider ,但没有成功。我在下面的答案中描述了我的情况和解决方案。
  • 是的。正如我所说,没有任何代码很难猜测。在我看来,你的服务层不应该有特定的视图或 UI,因为你的服务层(大部分时间)是作为单例共享的。很好,你自己找到了解决方案。

标签: vaadin vaadin-flow vaadin-grid


【解决方案1】:

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

PS。一些额外的解释。如果您从 View bean 设置 Service bean 的一些属性,那么这些属性是全局设置的,当您返回到使用相同服务的某个视图(无论在哪里 - 选项卡、窗口、浏览器、会话)时,您将获得最后一个全局服务状态。我希望这会对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2011-12-27
    • 2014-09-23
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    相关资源
    最近更新 更多