我使用带有休眠验证器的 JSR 303 验证,通过在控制器方法上指定 @Valid 来自动验证字段。验证工作正常。我知道在表单中添加了一个上传字段,并添加了一个 @RequestParam("file") 作为 MultipartFile 文件。现在它只有在所有字段在提交时都有效时才有效,否则我会收到 404(错误请求)。如果我删除 @Valid 注释,我会得到 javax.validation.ConstraintViolationException,其中包含状态 500 的所有验证违规。
我正在使用 Spring 3.2
我的表格:
<form action="#springUrl("/admin/stores/save")" method="POST" enctype="multipart/form-data">
Name:
#springBind( "store.name" )
<input type="text"
name="${status.expression}"
value="$!status.value" /><br>
......
<input type="file" name="file" accept="image/*">
<input type="submit" value="submit"/>
</form>
控制器:
@RequestMapping(value="/save", method = RequestMethod.POST)
@Transactional
public String save(@Valid @ModelAttribute Store store, @RequestParam("file") MultipartFile file, BindingResult bindingResult, ModelMap model) {
if (bindingResult.hasErrors()) {
model.addAttribute("message", "Failed");
model.addAttribute("store", store);
return "admin/stores/form";
} else {
.....