Я недавно обновил версию Primefaces до 6.2, и после этого я обнаружил, что загрузка файлов перестала работать.Ниже приведен мой код:
<p:fileUpload label="Choose (Max. 5Mb)" fileUploadListener="#{action.handleFileUpload}" mode="advanced" dragDropSupport="false" sizeLimit="6553600"
fileLimit="1" allowTypes="/(\.|\/)(xls|xlsx)$/" update=":dataUploadForm,:dataUploadForm:masterDataPanel" />
Код Java:
public void handleFileUpload(FileUploadEvent event) {
try {
UploadedFile uploadedFile = event.getFile();
// do some processing
} catch (Exception ex) {
LOGGER_.error("", ex);
}
}
Как показано на изображении ниже, когда я нажимаю кнопку Выбрать, открывается диалоговое окно, в котором можно выбрать файли когда я выбираю файл и нажимаю кнопку ОК, ничего не происходит.Но когда я перезагружаю эту страницу и затем выполняю ту же операцию, файл успешно загружается.
Мне удалось решить проблему, создав переменную типа данных «UploadedFile» в Bean, а затем изменив метод, как показано ниже:
public void handleFileUpload(FileUploadEvent event) {
try {
UploadedFile uploadedFile = event.getFile();
Bean.setUploadedFile(uploadedFile);
// do some processing
} catch (Exception ex) {
LOGGER_.error("", ex);
}
}
Но я не думаю, что это правильный подход, поскольку, когда параллельные пользователи будут загружать тяжелые файлы, JVM может быть остановлена из-за большой нагрузки.Есть ли у нас альтернатива этой проблеме?