Вопрос о возможности сделать 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.