ユーザー定義の列挙検証コメント


フロントエンドパラメータがある列挙値のシーンに属するかどうかを確認する必要がある場合に、列挙コメントをカスタマイズします。下のデモは他のブログからコピーしたもので、自分で使うだけです。前提:javalidationバッグは便利なカスタムチェックの入り口を提供しています。javax.validation.contraint Validatorです。
ステップ:
1.注釈を定義し、@Constrant(validatedBy=Order TypeValidator.class)で注釈があった場合の処理ロジックを指定します。即ち、処理ロジックはvalidatedByに指定されたクラスに書き込みます。2.注解ロジック類を書いた3.注解を使う
注釈インターフェース
@Documented
@Constraint(validatedBy = {})
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
public @interface EnumValidateAnnotation {

    /**
     *       
     *
     * @return
     */
    String message() default "";

    /**
     *     
     *
     * @return
     */
    Class<?>[] groups() default {};

    /**
     *        
     *
     * @return
     */
    Class<? extends Payload>[] payload() default {};

    /**
     *       ,      String   
     * @return
     */
    String[] enums() default {};

}

検査器(Costraint Validatorインターフェースを実現するには、最初の泛型書き込みタイプ、例えばTCheck、第二の汎型書き込みチェックする値のタイプ)
public class EnumStringValidator implements ConstraintValidator<EnumValidateAnnotation,String> {

    private List<String> enumStrings;

    @Override
    public void initialize(EnumValidateAnnotation constraintAnnotation) {
        enumStrings = Lists.newArrayList(constraintAnnotation.enums());
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (value == null) {
            return false;
        }
        //   Integer,     String    
        return enumStrings.contains(value);
    }
}


使用
/**
     *   
     * {@link FromEnum}
     */
    @NotNull(message = "        ")
	//       FromEnum String       enums 
	//         ,    ,             enums    
    @EnumValidateAnnotation(enums = {
    "from1", "from2"}, message = "      ")
    String from;