Перечисление hasMoreElements () - PullRequest
1 голос
/ 31 августа 2009

У меня есть форма JSP / HTML, в которой есть 2 элемента. Один - это раскрывающийся список выбора, а другой - поле загрузки файла (тип ввода = "файл"). Я использую метод POST и enctype как form-multipart. Я могу получить доступ как к раскрывающемуся списку, так и к файлу, используя MultipartRequest объект. Никаких проблем в этом нет.

Но когда я не загружаю какой-либо файл и когда я использую код в форме получения, такой как

MultipartRequest multipartRequest = new MultipartRequest(request,".",5*1024*1024);
String dummySelect= (String) multipartRequest.getParameter("dummy");
out.println("<BR>select is "+dummySelect);
Enumeration files = multipartRequest.getFileNames();

Теперь, в идеале, если я не загружаю какой-либо файл, я должен получить пустой перечислитель. Значение

while(files.hasMoreElements()) следует оценивать как ложное, чего не происходит. Может кто-нибудь сказать мне, почему? Это приводит к исключению nullPointerException.

Ответы [ 2 ]

0 голосов
/ 31 августа 2009

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

РЕДАКТИРОВАТЬ: Я думаю, что я все неправильно понял - в перечислении должно быть что-то даже для ввода файла, которое оставлено пустым (или если вы получите пустое перечисление в этом случае ... не знаю, документ не мне очень ясно).

0 голосов
/ 31 августа 2009

Пожалуйста, убедитесь, что тип отправляемого вами контента (точно) один из двух

  • применение / х-WWW-форм-urlencoded
  • multipart / form-data

В соответствии с API, который вы связали, класс обрабатывает только последний тип.

Кроме того, вы можете попробовать библиотеку Apache FileUpload .

...