@Target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER}) @Retention(value=RUNTIME) @Documented @Constraint(validatedBy=EnumElement.EnumElementValidator.class) @Published public @interface EnumElement
null
または空文字列の場合は、validと判定する。value()
で指定された列挙型定数を比較し、一致するものが存在すれば検証成功と判定される。
比較ロジックは以下の通りとなる。
EnumElement.WithValue
を実装していない場合、入力値と列挙型定数の名前(Enum.name()
で取得した値)を比較する。
入力値はString
に制限される(それ以外の場合、実行時エラーが発生する)。
デフォルトでは、比較時に入力値及び列挙型定数の大文字小文字は区別しない。
区別する場合はcaseSensitive()
をtrue
に設定する(デフォルト:false
)。
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; } }
Modifier and Type | Required Element and Description |
---|---|
java.lang.Class<? extends java.lang.Enum<?>> |
value
許容する値を含む列挙型
|
Modifier and Type | Optional Element and Description |
---|---|
boolean |
caseSensitive
大文字小文字を区別するか否か(
true : 区別しない) |
java.lang.Class<?>[] |
groups
グループ
|
java.lang.String |
message
メッセージ
|
java.lang.Class<? extends javax.validation.Payload>[] |
payload
payload
|