Java の BindingResult の使用方法
Javaでは、BindingResultはフォームバインド時に検証処理が発生した際のエラーを補足・保持します。一般的にはSpringフレームワークのフォームバリデーションと併用します。
Springが提供するフォームバリデーション機能を使用している場合、フォームバリデーションが失敗した場合、Springはエラー情報をBindingResultオブジェクトにバインドします。これにより、コントローラーでそれらのエラーにアクセスして処理することができます。
BindingResult の主な目的は、検証に失敗したフィールドと対応するエラーメッセージを格納するコンテナを提供することです。エラーは、BindingResult オブジェクトのメソッドを使用して取得して処理できます。
BindingResultを使用した簡単な例が次に示されています。
- コントローラーメソッドに@Validatedアノテーションを追加してフォーム検証を有効にする:
@PostMapping("/save")
public String saveUser(@Validated UserForm userForm, BindingResult bindingResult) {
// ...
}
- UserFormクラスに検証ルールを追加する:
public class UserForm {
@NotEmpty(message = "用户名不能为空")
private String username;
// getter and setter
}
- コントローラーメソッドでエラー処理を行う
@PostMapping("/save")
public String saveUser(@Validated UserForm userForm, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
List<ObjectError> errors = bindingResult.getAllErrors();
for (ObjectError error : errors) {
System.out.println(error.getDefaultMessage());
}
return "error";
}
// 保存用户
return "success";
}
上記例では、フォームのバリデーションが失敗した場合、エラーメッセージはBindingResultオブジェクトに追加されます。bindingResult.hasErrors()メソッドを使用してエラーの有無を確認できます。エラーがある場合は、bindingResult.getAllErrors()メソッドを使用してすべてのエラーを取得し、適切に対処できます。
@Validated アノテーションの直後に BindingResult オブジェクトを宣言する必要があります。そうでないと正しく動作しません。