2017-01-30 8 views
1

Я отправляю объект на контроллер пружины через форму jsp.Контроллер весны получает пустой объект

JSP:

<form:form modelAttribute="uploadItem" action="/uploadObject" method="post" enctype="multipart/form-data"> 

<form:input path="fileData" accept="audio/mpeg" type="file" id="file-upload" name="file-upload" /> 

<form:input type="text" path="title" id="upload-title" name="upload-title"/> 

<input type="image" src="..." alt="Upload"/> 

</form:form> 

ModelService:

public void fillUploadMelodyModel(Model model) { 
    fillAdminRootModel(model); 
    model.addAttribute("uploadItem", new UploadedItem()); 
} 

UploadedItem:

public class UploadedItem { 
    private CommonsMultipartFile fileData; 
    private String title; 
} 

Контроллер:

@RequestMapping(value = "/uploadObject", method = RequestMethod.POST) 
    public String doUpload(UploadedItem uploadItem, BindingResult result, Principal principal) { 
//at this point I get an empty object (null null values) 
} 

В чем проблема? Как передать объект контроллеру в jsp?

+0

Вы добавили в web.xml конфигурацию для загрузки файлов? максимальный размер файла? – cralfaro

+0

Я использую весеннюю загрузку без web.xml – cadmy

+0

Удалите атрибут 'name' из ваших элементов' form' и добавьте '@ ModelAttribute' в свой параметр метода. –

ответ

2

Попробуйте изменить то контроллер как этот

@RequestMapping(value = "/uploadObject", method = RequestMethod.POST) 
public String doUpload(UploadedItem uploadItem, 
         BindingResult result, 
         @RequestParam("fileData") MultipartFile file, 
         @RequestParam("title") String title, 
         Principal principal) { 
//Here you should receive your parameters 
} 
+1

Могло бы сделать это немного короче с этим: '@PostMapping ("/uploadObject ")' – bphilipnyc

+0

@bphilipnyc nice, я не использовал этот аннотация, но я буду :) – cralfaro

0

Я думаю, что имена, которые Вы использовали для файла (файлов загрузки) и название (загрузка-заголовка) не синхронизирован с объектом домена имена атрибутов , Измените свои имена на fileData и заголовок на странице Jsp.