Vaadin 10 scopes: No VaadinSession bound to current thread

253
03 февраля 2019, 21:40

Щупаю Vaadin 10. Если я правильно понял из туториала, при пользовании Spring-бинами нам нужно определить их область применения в Vaadin — VaadinSessionScope (и тогда мы дёргаем один и тот же бин в рамках рантайма программы) и UIScope (что означает, что для каждой сессии создаётся свой экземпляр бина).

Окей.

Создал View:

@Component
@Route(value = "admin")
@Theme(value = Lumo.class)
public class NewsStreamView extends VerticalLayout {
    private final UserService userService;
    private Grid<UserDto> grid = new Grid<>(UserDto.class);
    @Autowired
    public NewsStreamView(UserService userService) {
        add(grid);
        this.userService = userService;
    }
    @PostConstruct
    private void init() {
        List<UserDto> users = userService.getAll();
        grid.setItems(users);
    }
}

Пометил сервис нужным скоупом:

@Service
@UIScope
public class UserService extends AbstractService<User, UserDto, QUser,
        EntityDtoMapper<User, UserDto>, UserRepository> {
    public UserService(UserRepository repository, EntityDtoMapper<User, UserDto> mapper) {
        super(repository, mapper);
    }
}

По идее, всё должно заработать, но нет:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Scope 'vaadin-ui' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.lang.IllegalStateException: No VaadinSession bound to current thread
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:362) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    ... 19 common frames omitted
Caused by: java.lang.IllegalStateException: No VaadinSession bound to current thread
    at com.vaadin.flow.spring.scopes.AbstractScope.getVaadinSession(AbstractScope.java:75) ~[vaadin-spring-10.0.3.jar:na]
    at com.vaadin.flow.spring.scopes.VaadinUIScope.getBeanStore(VaadinUIScope.java:121) ~[vaadin-spring-10.0.3.jar:na]
    at com.vaadin.flow.spring.scopes.AbstractScope.get(AbstractScope.java:44) ~[vaadin-spring-10.0.3.jar:na]
    at com.vaadin.flow.spring.scopes.VaadinUIScope.get(VaadinUIScope.java:42) ~[vaadin-spring-10.0.3.jar:na]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:350) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    ... 25 common frames omitted
READ ALSO
Обезопасить токен

Обезопасить токен

Написал Discord-бота на JavaПротестировал, но в какой-то момент мой токен перехватили и мой канал взломали и удалили все

216
Что такое Context ?

Что такое Context ?

Если можно то по простому и желательно с примером

198
Как поменять цвет у SVG вставленную через object

Как поменять цвет у SVG вставленную через object

Не могу поменять цвет у SVG вставленную черех objectВот так на странице вставляю SVG

290
ActionCable отправка сообщения

ActionCable отправка сообщения

пришлось использовать библиотеку ws ActionCable в проекте но столкнулся скорее всего с недопониманиемКак отправить такое сообщение с такой командой...

210