Загрузка нескольких файлов в проект и использование имени файла

Добрый день!

Версия плагина 2.1.

Есть необходимость хранить в сущности, назовём её “Предложение”, несколько файлов. Нашел на форуме тему, но она для версии плагина 1.5. В документации на версию 2.1 отсутствует данный раздел. Есть какая-либо встроенная функция для загрузки нескольких файлов в версии 2.1?

Пока решил проблему тем, что создал отдельную сущность SugFile, и в ней добавил поле для хранения файла типа byte[], и к “Предложению” добавил поле типа List<SugFile>.
Перед сохранением сущности SugFile хотел добавить логику, при которой берется имя загруженного файла из поля FileUploadField (viewComponent, инжектированный к код контроллера) с помощью метода getFileName() или метода getUploadedFileName() и устанавливается в поле сущности SugFile с именем FileName типа String.

Однако, оба метода возвращают null, хотя сам файл загрузился и его имя отображается рядом с кнопкой “Загрузка”.

Для чего это было нужно: Чтобы потом загрузить файл с помощью кнопки с таким же названием, каким оно было, а самое главное - с таким же расширением (потому что заранее формат файла неизвестен). Бин Downloader принимает в метод download() массива байтов и имя файла, котором он назовёт загружаемый файл, однако если не передать имя файла с расширением, он загрузит его без него.

Подскажите, пожалуйста, где может быть ошибка? И как можно сделать так, как мне нужно?))

@ViewComponent
    private FileUploadField fileUploadField;

@Subscribe
    public void onBeforeSave(final BeforeSaveEvent event) {

        String fileName = fileUploadField.getUploadedFileName();

        getEditedEntity().setFileName(fileName == null ? "sobaka" : fileName);

    }

В итоге в поле FileName всегда оказывается собака)))

Добрый день!

Для надежного получения имени загружаемого файла лучше воспользоваться методом FileUploadSucceededEvent.getFileName() в обработчике этого события, как показано в примере:

@Subscribe("fileUploadField")
public void onFileUploadFieldFileUploadSucceeded(final FileUploadSucceededEvent<FileStorageUploadField> event) {
    notifications.show("Uploaded file: " + event.getFileName());
}

А для загрузки нескольких файлов одновременно нужно использовать компонент Upload вместо FileUploadField, см. пример.

С уважением,
Константин