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注释,但似乎没有用于视图..
看来我自己找到了解决方案。
首先,对我帮助很大的链接: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)
希望有帮助。
| 归档时间: |
|
| 查看次数: |
31869 次 |
| 最近记录: |