javavalidation

Java annotation for Null but neither Empty nor Blank


Is there are any java annotation(s) that can validate like the example below?

String test;
test = null; //valid
test = ""; //invalid
test = " "; //invalid
test = "Some values"; //valid

Solution

  • You need to create a custom annotation: @NullOrNotBlank

    First create the custom annotation: NullOrNotBlank.java

    @Target( {ElementType.FIELD})
    @Retention(RUNTIME)
    @Documented
    @Constraint(validatedBy = NullOrNotBlankValidator.class)
    public @interface NullOrNotBlank {
        String message() default "{javax.validation.constraints.NullOrNotBlank.message}";
        Class<?>[] groups() default { };
        Class<? extends Payload>[] payload() default {};
    }
    

    Then the actual validator: NullOrNotBlankValidator.java

    public class NullOrNotBlankValidator implements ConstraintValidator<NullOrNotBlank, String> {
    
        public void initialize(NullOrNotBlank parameters) {
            // Nothing to do here
        }
    
        public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
            return value == null || value.trim().length() > 0;
        }
    }