将MultipartFile作为可选字段的分段请求-Spring MVC

Geo*_*lou 5 java file-upload multipartform-data spring-mvc

我在J2EE Web应用程序上使用Spring MVC。
我创建了一种方法,将请求主体绑定到上述模型

@RequestMapping(value = "/", method = RequestMethod.POST, produces = "application/json")
public AModel createEntity(@Valid @ModelAttribute MyInsertForm myInsertForm) {
    // coding..
}  
Run Code Online (Sandbox Code Playgroud)

一切工作正常,当我在MyEntityForm中包含MultipartFile类型的属性时,我必须以内容类型“ multipart / form-data”发出请求。
同样,在这种情况下,一切都工作得很好。

我面临的问题是我希望将MultipartFile属性设置为可选。
当客户请求包含文件时,我的方法很好用,但是当客户请求不包含文件时,spring抛出

HTTP状态500-请求处理失败;嵌套的异常是org.springframework.web.multipart.MultipartException:无法解析多部分servlet请求。嵌套的异常是org.apache.commons.fileupload.FileUploadException:流意外结束

有什么方法可以解决此问题而无需在控制器上创建两个方法(一个方法带有MultipartFile,另一个方法则没有)?

tk_*_*tk_ 13

我有同样的问题,只是添加了required=false对我有用的。请在下面找到示例代码,

@RequestMapping(value = "/", method = RequestMethod.POST, produces = "application/json")
public AModel createEntity(@Valid @ModelAttribute MyInsertForm myInsertForm, @RequestParam(value ="file", required=false) MultipartFile file) {
    // coding..
}  
Run Code Online (Sandbox Code Playgroud)


Jun*_*san 3

尝试添加

(required=false)
Run Code Online (Sandbox Code Playgroud)

方法签名中的多部分属性。