コントローラーメソッドで @Valid を指定することにより、フィールドを自動的に検証するために、休止状態バリデーターで JSR 303 検証を使用していました。検証は正常に機能していました。フォームにアップロード フィールドを追加し、@RequestParam("file") を MultipartFile ファイルとして追加したことを知っています。送信時にすべてのフィールドが有効な場合にのみ機能するようになりました。それ以外の場合は、404 (Bad Request) が返されます。@Valid アノテーションを削除すると、ステータス 500 のすべての検証違反で javax.validation.ConstraintViolationException が発生します。
私は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 {
.....