Vaadin - ConcurrentModificationException при добавлении компонента в VerticalLayout

В Vaadin 7.7.10 у меня есть VerticalLayout и несколько компонентов (каждый из которых состоит из нескольких компонентов внутри). Я пытаюсь добавить их с помощью функции .addComponent (), но один из них вызывает ошибку:

Caused by: java.util.ConcurrentModificationException
    at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:953)[:1.7.0_79]
    at java.util.LinkedList$ListItr.next(LinkedList.java:886)[:1.7.0_79]
    at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1067)[:1.7.0_79]
    at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:623)
    at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:684)
    at com.vaadin.ui.AbstractComponent.setParent(AbstractComponent.java:587)
    at com.vaadin.ui.AbstractComponentContainer.addComponent(AbstractComponentContainer.java:214)
    at com.vaadin.ui.AbstractOrderedLayout.addComponent(AbstractOrderedLayout.java:97)

До этой ошибки я также вижу пару предупреждений сервера Vaadin:

Tried to unregister XY (num) which is not registered

Однако это происходит только в первый раз, когда страница отображается после запуска сервера. При повторной попытке все работает нормально.

Похоже, мне не хватает какого-то метода, который правильно инициализирует компонент после создания в первый раз - метода, который вызывается автоматически при следующей загрузке обертки View. Но пока понятия не имею, что это должно быть?


person Ellrohir    schedule 05.03.2019    source источник
comment
Пожалуйста, покажите соответствующий код, нашего мастера сейчас нет в офисе   -  person André Schild    schedule 05.03.2019


Ответы (1)


Поэтому я не нашел точного источника своей ошибки, но нашел способ ее избежать. Что помогло, так это явный вызов метода .setValue() для каждого Field внутри компонента перед добавлением с помощью метода .addComponent().

person Ellrohir    schedule 13.12.2019