spring multipart文件上传表单验证

Ben*_*n G 5 validation multipartform-data spring-mvc

我是春天的新手,我现在正在努力解决在视图中显示错误的多部分表单提交/验证方案所需的许多部分.

这是我目前拥有的文件:

resourceupload.jsp:显示上载文件的表单的视图.

<form:form method="post" action="resource/upload" enctype="mutlipart/form-data">
 <input name="name" type="text"/>
 <input name="file" type="file" />
 <input type="submit"/>
<form:errors path="file" cssClass="errors"/>
</form>
Run Code Online (Sandbox Code Playgroud)

resourceuploadcontroller.java:处理表单提交的控制器,并且(不成功)尝试将文件验证错误发送回视图:

@RequestMapping(method = RequestMethod.POST)
public String handleFormUpload( @RequestParam("file") MultipartFile file , @RequestParam("name") String name,Object command, Errors validationErrors){
..perform some stuff with the file content, checking things in the database, etc...
.. calling validationErrors.reject("file","the error") everytime something goes wrong...

return "redirect:upload"; // redirect to the form, that should display the error messages
Run Code Online (Sandbox Code Playgroud)

现在,这种方法显然有问题:

1 /我必须在validationErrors参数之前添加一个虚拟的"命令"对象,否则spring会给我一个错误.这似乎不对.

2 /我添加该参数后,重定向不会将错误传递给视图.我尝试在控制器的开头使用@SessionAttribute("file"),没有任何运气.

如果有人可以提供帮助...我已经看过@ResponseBody注释,但似乎没有用于视图..

Ben*_*n G 3

看来我自己找到了解决方案。

首先,对我帮助很大的链接:http://www.ioncannon.net/programming/975/spring-3-file-upload-example/ 和 Spring 3 MVC - form:errors 没有显示 显示良好的错误显示所有错误的技巧,使用

<form:errors path="*"/>. 
Run Code Online (Sandbox Code Playgroud)

现在,列出我为使该功能正常工作而所做的所有更改:

1/使用“rejectValue”而不是“reject”。

2/ 直接返回视图而不是重定向。

3/ 创建一个带有 CommonsMultipartFile 属性的“UploadItem”模型

所以,总而言之,我的控制器方法变成了

@RequestMapping(method = RequestMethod.POST)
public String handleFormUpload( @ModelAttribute("uploadItem") UploadItem uploadItem, BindingResult errors){
... use errors.rejectValue ... in case of errors (moving everything i could in a UploadItemValidator.validate function)
return "uploadform"
Run Code Online (Sandbox Code Playgroud)

希望有帮助。