Java String validation using enum values and annotation

后端 未结 8 1518
暖寄归人
暖寄归人 2020-11-30 23:47

I want to validate a string against a set of values using annotations.

What I want is basically this:

@ValidateString(enumClass=com.co.enum)
String d         


        
8条回答
  •  被撕碎了的回忆
    2020-12-01 00:21

    This is what I did.

    Annotation

    public @interface ValidateString {
    
        String[] acceptedValues();
    
        String message() default "{uk.dds.ideskos.validator.ValidateString.message}";
    
        Class[] groups() default { };
    
        Class[] payload() default { }; 
    }
    

    Validation Class

    public class StringValidator implements ConstraintValidator{
    
        private List valueList;
    
        @Override
        public void initialize(ValidateString constraintAnnotation) {
            valueList = new ArrayList();
            for(String val : constraintAnnotation.acceptedValues()) {
                valueList.add(val.toUpperCase());
            }
        }
    
        @Override
        public boolean isValid(String value, ConstraintValidatorContext context) {
            return valueList.contains(value.toUpperCase());
        }
    
    }
    

    And i used it like

    @ValidateString(acceptedValues={"Integer", "String"}, message="Invalid dataType")
    String dataType;
    
    Long maxValue;
    Long minValue;
    

    Now I need to figure out how to implement conditional check ie. if String then maxValue and minValue should be null or Zero..

    Any ideas?

提交回复
热议问题