Annotation Interface EnumElement


許容する値を列挙型で指定するためのアノテーション。

入力値がnullまたは空文字列の場合は、validと判定する。
上記以外の場合は、入力値とvalue()で指定された列挙型定数を比較し、一致するものが存在すれば検証成功と判定される。 比較ロジックは以下の通りとなる。

  1. 列挙型がEnumElement.WithValueを実装していない場合、入力値と列挙型定数の名前(Enum.name()で取得した値)を比較する。 入力値はStringに制限される(それ以外の場合、実行時エラーが発生する)。 デフォルトでは、比較時に入力値及び列挙型定数の大文字小文字は区別しない。 区別する場合はcaseSensitive()trueに設定する(デフォルト:false)。
  2. 列挙型がEnumElement.WithValueを実装している場合、入力値とEnumElement.WithValue.getValue()が返却する値を比較する。 入力値はStringもしくはNumberに制限される(それ以外の場合、実行時エラーが発生する)。 この場合、caseSensitive()を指定しても無視される。

EnumElement.WithValue.getValue()を実装した列挙型を使用する場合の例を以下に示す。

 public class SampleBean {
     @EnumElement(SampleEnum.class)
     String sampleString;
 }

 public enum SampleEnum implements EnumElement.WithValue<String> {
     ON("1"), OFF("0");

     private final String value;

     SampleEnum(String value) {
         this.value = value;
     }

     @Override
     public String getValue() {
         return value;
     }
 }
 
Author:
Takayuki UCHIDA
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    許容値を列挙型でバリデーションするConstraintValidatorクラス。
    static @interface 
    複数指定用のアノテーション
    static interface 
    EnumElementで許容する列挙型の値を実装するためのインタフェース。
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Class<? extends Enum<?>>
    許容する値を含む列挙型
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    boolean
    大文字小文字を区別するか否か(true: 区別しない)
    Class<?>[]
    グループ
    メッセージ
    Class<? extends jakarta.validation.Payload>[]
    payload
  • Element Details

    • value

      Class<? extends Enum<?>> value
      許容する値を含む列挙型
    • groups

      Class<?>[] groups
      グループ
      Default:
      {}
    • message

      String message
      メッセージ
      Default:
      "{nablarch.core.validation.ee.EnumElement.message}"
    • payload

      Class<? extends jakarta.validation.Payload>[] payload
      payload
      Default:
      {}
    • caseSensitive

      boolean caseSensitive
      大文字小文字を区別するか否か(true: 区別しない)
      Default:
      false