2017-01-30 1 views
1

J'envoie un objet au contrôleur de ressort via la forme jsp.Contrôleur de ressort obtiens un objet vide

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; 
} 

Controller:

@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) 
} 

Quel est le problème? Comment passer l'objet au contrôleur dans jsp?

+0

avez-vous ajouté au web.xml la configuration pour télécharger des fichiers? la taille maximale du fichier? – cralfaro

+0

J'utilise spring boot sans web.xml – cadmy

+0

Enlevez l'attribut 'name' de vos éléments' form' et ajoutez '@ ModelAttribute' à votre paramètre de méthode. –

Répondre

2

Essayez de changer alors votre contrôleur comme celui-ci

@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

Pourrait rendre un peu plus court avec ceci: '@PostMapping ("/uploadObject ")' – bphilipnyc

+0

@bphilipnyc nice je n'ai pas utilisé cette annotation yest mais je vais :) – cralfaro

0

Je pense que les noms que vous avez utilisés pour le fichier (file-upload) et le titre (upload-titre) ne sont pas en phase avec votre objet de domaine des noms d'attribut . Changez vos noms en fileData et en titre dans votre page JSP.