Получить текущий VaadinContext и текущий VaadinSession (оба места для сохранения состояния в виде пар «ключ-значение» «атрибут») в Vaadin Flow - PullRequest
2 голосов
/ 21 сентября 2019

При использовании Vaadin Flow версии 14 я знаю, что мы можем сохранить состояние в виде пар ключ-значение, которые хранятся в виде «атрибутов», с помощью getAttribute / setAttribute / removeAttribute методов, найденных в:

Как это сделатьполучить доступ к текущему объекту для этих классов?

1 Ответ

2 голосов
/ 21 сентября 2019

VaadinSession.getCurrent()

Для этой области действия на пользователя класс VaadinSesion предоставляет метод статического класса getCurrentчтобы получить доступ к текущему экземпляру.

VaadinSession session = VaadinSession.getCurrent() ;   // Fetch current instance of `VaadinSession` to use its key-value collection of attributes.
session.setAttribute( User.class , user ) ;            // Register user's successful authentication.

VaadinService.getCurrent().getContext()

Для этого область действия веб-приложения , вы должны перепрыгнуть через один дополнительный обруч.Класс VaadinService фактически представляет веб-приложение в целом.Но он делегирует функцию атрибутов классу VaadinContext, экземпляр которого отслеживается текущим экземпляром службы.Так что получите сервис и используйте его для получения контекста .

VaadinContext context = VaadinService.getCurrent().getContext() ;  // Get the current `VaadinService` object, and ask it for the current `VaadinSession` object.
context.setAttribute( ServiceLocator.class , new ServiceLocatorForTesting() ) ;
...