2017-01-30 1 views
1

jspフォームを介してスプリングコントローラにオブジェクトを送信しています。Springコントローラが空のオブジェクトを取得する

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

'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いいえ、私はその注釈yestを使用していませんでしたが、私は:) – cralfaro

0

のようなあなたのコントローラ、その後変更してみてください。 Jspページであなたの名前をfileDataとtitleに変更してください。

関連する問題