Java の BindingResult の使用方法

Javaでは、BindingResultはフォームバインド時に検証処理が発生した際のエラーを補足・保持します。一般的にはSpringフレームワークのフォームバリデーションと併用します。

Springが提供するフォームバリデーション機能を使用している場合、フォームバリデーションが失敗した場合、Springはエラー情報をBindingResultオブジェクトにバインドします。これにより、コントローラーでそれらのエラーにアクセスして処理することができます。

BindingResult の主な目的は、検証に失敗したフィールドと対応するエラーメッセージを格納するコンテナを提供することです。エラーは、BindingResult オブジェクトのメソッドを使用して取得して処理できます。

BindingResultを使用した簡単な例が次に示されています。

  1. コントローラーメソッドに@Validatedアノテーションを追加してフォーム検証を有効にする:
@PostMapping("/save")
public String saveUser(@Validated UserForm userForm, BindingResult bindingResult) {
    // ...
}
  1. UserFormクラスに検証ルールを追加する:
public class UserForm {
    @NotEmpty(message = "用户名不能为空")
    private String username;
    
    // getter and setter
}
  1. コントローラーメソッドでエラー処理を行う
@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 オブジェクトを宣言する必要があります。そうでないと正しく動作しません。

bannerAds