前提
※SpringBoot2.3以上の場合、設定が必要
(Gradleの場合はbuild.gradleに追記)
dependencies { … implementation 'org.springframework.boot:spring-boot-starter-validation' }
使い方
1.変数にアノテーションを付与する
public class Member { @NotBlank private String name; @Max(100) private String age; }
2.Controllerにアノテーションを付与する
@Validatedを@ModelAttribute内に付与することでバリデータが走る
※BindingResultは必ず@ModelAttributeの直後にすること
@PostMapping public String create(@ModelAttribute("member") @Validated Member member, BindingResult result, Model model) { if (result.hasErrors()) { return "new"; } else { memberService.save(member); return "redirect:/members"; } }
3.HTMLに記載
th:if="${#fields.hasErrors('name')}" th:errors="*{name}"
<form th:method="post" th:action="@{/members}" th:object="${member}"> <div class="form-group row"> <label class="col-md-2 control-label">名前</label> <div class="col-md-10"> <input class="form-control" type="text" name="name" th:value="*{name}" /> <div class="text-danger" th:if="${#fields.hasErrors('name')}" th:errors="*{name}"></div> </div> </div> <div class="form-group row"> <label class="col-md-2 control-label">年齢</label> <div class="col-md-10"> <input class="form-control" type="text" name="age" th:value="*{age}"/> <div class="text-danger" th:if="${#fields.hasErrors('age')}" th:errors="*{age}"></div> </div> </div> <div class="form-group row"> <div class="offset-md-2 col-md-10"> <button class="btn btn-primary">新規</button> </div> </div> </form>
種類
アノテーション | 用途 | 記述 | デフォルトメッセージ |
---|---|---|---|
@NotBlank | Null、空文字(“”)、空白のみならエラー | @NotBlank | 空白は許可されていません |
@NotEmpty | Null、または空ならエラー | @NotEmpty | 空要素は許可されていません |
@Null | null以外でエラー | @Null | null にしてください |
@NotNull | nullならエラー | @NotNull | null 以外にしてください? |
@Pattern | 指定したパターン以外ならエラー※+なければ1文字のみ | @Pattern(regexp=“[0-9]+”) | 正規表現 "[0-9]+" にマッチさせてください |
@Min | min値を下回るとエラー | @Min(value=1) ※0でエラー | 1以上の値にしてください |
@Max | max値を超えるとエラー | @Max(value=100) ※101でエラー | 100以下の値にしてください |
@DecimalMin | min値を下回るとエラー | @DecimalMin(“0.0”) | 0.0 以上の値にしてください |
@DecimalMax | max値を超えるとエラー | @DecimalMax(“9.9”) | 9.9 以下の値にしてください |
@Size | 文字数が指定した長さ以外ならエラー※minまたはmaxのみでも可 | @Size(min=4, max=64) | 4 から 64 の間のサイズにしてください |
@Digits | 範囲内の数値以外ならエラー | @Digits(integer=6, fraction=2) | 値は次の範囲にしてください (<整数 6 桁>.<小数点以下 2 桁>) |
@AssertTrue | falseならエラー※boolean型のみ | @AssertTrue | true にしてください |
@AssertFalse | trueならエラー※boolean型のみ | @AssertFalse | false にしてください |
@Future | 未来日でないならエラー※日付型のみ | @Future | 未来の日付にしてください |
@Past | 過去日でないならエラー※日付型のみ | @Past | 過去の日付にしてください |
@CreditCardNumber | クレカ番号でないならエラー | @CreditCardNumber | 正しくないクレジットカードの番号です |
メルアドでないならエラー | 電子メールアドレスとして正しい形式にしてください | ||
@URL | URLでないならエラー | @URL | URL として正しい形式にしてください |
エラーメッセージを指定する
パターン1.項目単位に指定
messageパラメータを記述する
@NotBlank(message="必須入力です")
チェックの範囲