Java annotation for Null but neither Empty nor Blank

后端 未结 5 683
别那么骄傲
别那么骄傲 2020-12-13 06:38

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

String test;
test = null; //valid
test = ""; //invalid
test = " &         


        
5条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-13 07:07

    There isn't such an annotation in either javax.validation or Hibernate Validator. There was a request to add one to Hibernate Validator but it was closed as "won't fix" due to the possibility of writing your own relatively easily. The suggest solution was to either use your own annotation type defined like this:

    @ConstraintComposition(OR)
    @Null
    @NotBlank
    @ReportAsSingleViolation
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
    @Retention(RUNTIME)
    @Constraint(validatedBy = { })
    public @interface NullOrNotBlank {
        String message() default "{org.hibernate.validator.constraints.NullOrNotBlank.message}";
        Class[] groups() default { };
        Class[] payload() default { };
    }
    

    or to use the @Pattern annotation with a regular expression that requires a non-whitespace character to be present (as the Pattern annotation accepts nulls and does not match them against the pattern).

提交回复
热议问题