在 Vaadin 14 应用程序中的何处存储“UI”-对象范围状态?
Where to store `UI`-object scoped state in a Vaadin 14 app?
上下文(网络应用程序)
为了存储我们整个 Vaadin 应用程序可用的状态,我们可以在运行时代表我们整个基于 Vaadin 的 Web 应用程序的 VaadinContext
对象上获取并设置 "Attribute"。这些属性充当键值集合,其中键的类型为 String
,值的类型为 Object
。
我们通过调用 UI.getCurrent().getSession().getService().getContext()
访问上下文。
会话(每个用户)
要存储任何用户会话可用的状态,我们可以类似地在 VaadinSession
对象上获取和设置 "attributes"。
我们通过调用 UI.getCurrent().getSession()
访问会话。
UI
(网络浏览器window/tab)
上下文和会话这两个级别的范围是围绕 Java Servlet specification. But Vaadin effectively has a third, finer level of scope. Vaadin supports multi-window apps, where each web browser window (or tab) has its own content handled by a UI
对象中定义的等效项的包装器。如果用户在我们的 Vaadin 应用程序中打开了三个 windows,则该用户在服务器上拥有三个 UI
对象实例,它们位于一个 VaadinSession
对象中。
因此,似乎常见的需求是根据 UI
(Web 浏览器 window/tab)存储状态。所以我希望在 UI
上看到与在 VaadinSession
和 VaadinContext
上看到的相同类型的 getAttribute
和 setAttribute
方法。但是,不,我在 UI
上没有看到这样的方法。
➥ 每个 UI
对象是否有适当的位置来存储状态?
在过去,在前几代Vaadin中,我们总是编写自己的UI子类。所以我们总是可以通过在我们自己的 UI
子类上定义成员变量来存储状态。现在,在 Vaadin Flow(v10+,当前 14)时代,我们不鼓励(禁止?)编写 UI
的子类。
在提交此类属性的功能请求之前,我想问一下我是否错过了人们在当前基于 Vaadin 的应用程序中存储每个 UI
状态的常用位置。
在 Vaadin Flow 中有 ComponentUtil
帮助程序 class,它具有使用组件和 UI.
存储数据的方法
查看一对 ComponentUtil.setData
方法,一个 taking a Class
as key, the other taking a String
作为键,就像在 VaadinContext
& [= 上找到的 getAttribute
/setAttribute
方法一样17=]。
上下文(网络应用程序)
为了存储我们整个 Vaadin 应用程序可用的状态,我们可以在运行时代表我们整个基于 Vaadin 的 Web 应用程序的 VaadinContext
对象上获取并设置 "Attribute"。这些属性充当键值集合,其中键的类型为 String
,值的类型为 Object
。
我们通过调用 UI.getCurrent().getSession().getService().getContext()
访问上下文。
会话(每个用户)
要存储任何用户会话可用的状态,我们可以类似地在 VaadinSession
对象上获取和设置 "attributes"。
我们通过调用 UI.getCurrent().getSession()
访问会话。
UI
(网络浏览器window/tab)
上下文和会话这两个级别的范围是围绕 Java Servlet specification. But Vaadin effectively has a third, finer level of scope. Vaadin supports multi-window apps, where each web browser window (or tab) has its own content handled by a UI
对象中定义的等效项的包装器。如果用户在我们的 Vaadin 应用程序中打开了三个 windows,则该用户在服务器上拥有三个 UI
对象实例,它们位于一个 VaadinSession
对象中。
因此,似乎常见的需求是根据 UI
(Web 浏览器 window/tab)存储状态。所以我希望在 UI
上看到与在 VaadinSession
和 VaadinContext
上看到的相同类型的 getAttribute
和 setAttribute
方法。但是,不,我在 UI
上没有看到这样的方法。
➥ 每个 UI
对象是否有适当的位置来存储状态?
在过去,在前几代Vaadin中,我们总是编写自己的UI子类。所以我们总是可以通过在我们自己的 UI
子类上定义成员变量来存储状态。现在,在 Vaadin Flow(v10+,当前 14)时代,我们不鼓励(禁止?)编写 UI
的子类。
在提交此类属性的功能请求之前,我想问一下我是否错过了人们在当前基于 Vaadin 的应用程序中存储每个 UI
状态的常用位置。
在 Vaadin Flow 中有 ComponentUtil
帮助程序 class,它具有使用组件和 UI.
查看一对 ComponentUtil.setData
方法,一个 taking a Class
as key, the other taking a String
作为键,就像在 VaadinContext
& [= 上找到的 getAttribute
/setAttribute
方法一样17=]。