2017-01-30 154 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的spring引導程序 – cadmy

+0

從您的form元素中刪除'name'屬性,並將'@ 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不錯,我沒有使用該註釋,但我會:) – cralfaro

0

我認爲你已經使用的文件(文件上傳)和標題(上傳標題)的名稱不同步與您的域對象的屬性名稱。在你的Jsp頁面中將你的名字改爲fileData和title。