Important Notice - Forums is archived
To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
Вопрос о возможности сделать binding от bean-(0..*)>bean к таблице
Я сейчас пишу приложение где в модели у меня два следующих класса:
public class ApplicationAttachment implements Serializable {
private String fileName;
private String fileType;
}
public class ApplicationInfoSet implements Serializable {
private List<ApplicationAttachment> attachmentList = new ArrayList<ApplicationAttachment>();
}
ApplicationInfoSet я соединил с элементами формы через стандартный BeanFieldGroup.
Все работает замечательно.
Проблема:
Я хочу вставить элемент таблицу которая отображает загруженные вложения и привязана к attachmentList.
Эта таблица изначально пуста, и пользователь может добавлять туда вложения (file upload).
Существует ли возможность чтобы я в одном центральном месте добавлял ApplicationAttachment и исходный bean обносвлялся вместе с таблицой?
Конечно можно обойтись Listener-ами но неужели обязательно именно так и нет другово способа как с обычными форм элементами.
Стандартный BeanItemContainer как я пока увидел не привязывает себя к Collection и слушает только изменения значений внутри показываемого класса.
Вообще куда поидее я должен добавлять новые элементы вложения?
- Если добавлять в Property из BeanFieldGroup - тогда контеинер таблицы ничего не знает о новых элементах
- Если напрямую в ArrayList то нет буфферинга, и контеинер также ничего не знает о новых элементах
- контеинер BeanItemContainer привязаный к таблице - так как нету привязки bind к Property перенос значений должен происходить в ручную перед commit
Не могу разобраться как вернее сделать. Буду благодарен за хороший совет: Мне кажется я не первый кто стоит перед этой проблемой - это стандартный binding к 1..n bean который встречается везде.
С уважением
Леонид
А Вам обязательно использовать ApplicationInfoSet ? Для ваших целей как раз и подойдут BeanContainer или BeanItemContainer вместо ApplicationInfoSet . Упомянутые контейнеры "интроспектят" классы бинов для сбора их пропертей, но они и содержат эти бины в виде коллекции, связанной с таблицей.
Поэтому замените ваш класс ApplicationInfoSet на один из контейнеров и используйте методы addItem() вместо методов List-а внутреннего атрибута attachmentList.