Объект привязки формы Spring 3 всегда нулевой - PullRequest
3 голосов
/ 25 февраля 2011

Я пытаюсь связать вложенный объект с Spring 3, и у меня возникают проблемы.

JSP:

<portlet:actionURL var="formAction" />
<form:form id="add-objects-form" method="post" action="${formAction}">
   <input name = "obj.a"...>
   <input name = "obj.b"...>
   <input type = "file" multiple="multiple" name="file"/>
</form>

Объект формы:

class FormObject{
private final static Logger logger = ...

private MultipartFile file
private Obj obj

...getters and setters
}

Контроллер:

@RequestMapping(method = RequestMethod.POST)
public void uploadDocument(@ModelAttribute FormObject formObject, BindingResult results ) {

}

formObject получает obj.a и obj.b, но file всегда равно нулю.

1 Ответ

2 голосов
/ 25 февраля 2011

Добавить modelAttribute="formObject" в <form:form>

Также убедитесь, что вы не исключили отладочную информацию из классов.Если у вас есть, или вы не уверены, укажите @ModelAttribute("formObject")

Для обработки файлов (многокомпонентные данные) вам необходимо указать enctype для формы:

enctype="multipart/form-data"

Обновить: так как выиспользуя js-библиотеку для загрузки файла, вот что нужно сделать:

  • загрузка только изображения с запросом ajax (больше ничего не отправляйте).Сохраните загруженные файлы во временном расположении
  • , ответ может содержать имена временных файлов.Сохраните эти имена в скрытом поле
  • , затем отправьте форму (либо через ajax, либо через регулярную отправку) и передайте значение скрытого поля, которое теперь содержит только строки
  • для перемещения файловиз временного местоположения в постоянное местоположение
  • файлы, которые были загружены, но без отправки формы, могут быть очищены с помощью ежечасной / ежедневной работы.
...