Been Validationの検証パターン一覧

システム開発Tips

概要

Bean Validationを使う機会があったのでちょっと調べました。

@sizeは@lengthでも代用できますが、@lengthはHibernate固有のバージョンのようです。

なので@sizeを使用するほうが移植性は高くなります。

Bean Validation用アノテーション一覧

  • 必須入力バリデーション
    • @NotBlank
  • 数値範囲(最大)バリデーション
    • @DecimalMax
    • @Max
  • 数値範囲(最小)バリデーション
    • @DecimalMin
    • @Min
  • 最小/最大桁数範囲バリデーション
    • @Size
  • Eメールバリデーション
    • @Email
  • 正規表現
    • @Pattern(regexp = "正規表現")

※正規表現は「[よく使う正規表現一覧]」(https://kobe-systemdesign.work/2021/01/07/%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be%e4%b8%80%e8%a6%a7/ "こちら")を参照!

専用の検証アノテーションに思うこと

用意されている個別のアノテーションについては、値の必須が前提の気がします。

これを使用する場合は「未入力」という状態を値で明示的にやり取りする必要がある気がします。

でないと絶対チェックエラーになるのですが。。。何か回避する方法あります?

なので結局


private String num;

@AssertTrue(message = "{key}")
public boolean isValidNumber() {

    if (StringUtils.isEmpty(num)) {
        return false;
    }

    String regex = "^\\d{4}+$" ;
    Matcher matcher = Pattern.compile(regex).matcher(num);
    return matcher.matches();
}

入力されていたらチェックするということをやりたい場合は@AssertTrueを使うことになります。
未入力をnullやブランクで表現する場合は、もうこれ使う以外に道が無い気がしますが、どうなのでしょうね。

フォローお願いします!

コメント

タイトルとURLをコピーしました