И / или условие при проверке на основе аннотаций Spring

Я использую проверку на основе аннотаций Spring 3. Я хочу добавить следующую проверку для строковых полей

Поле может быть пустым ИЛИ оно должно содержать непустую строку

Я знаю аннотацию вроде @Null , @NotEmpty , но как я могу использовать и то, и другое с условием ИЛИ?


Решение:

Использование @Size (min = 1) помогает, но не обрабатывает пробелы. Поэтому добавлена ​​настраиваемая аннотация NotBlankOrNull , которая разрешает null и непустые строки, а также заботится о пробелах. Большое спасибо @Ralph.
Вот мой класс валидатора Annotation

@Documented
@Constraint(validatedBy = { NotBlankOrNullValidator.class })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
public @interface NotBlankOrNull {
    String message() default "{org.hibernate.validator.constraints.NotBlankOrNull.message}";

    Class[] groups() default { };

    Class[] payload() default { };
}

public class NotBlankOrNullValidator implements ConstraintValidator {

    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
        if ( s == null ) {
            return true;
        }
        return s.trim().length() > 0;
    }

    @Override
    public void initialize(NotBlankOrNull constraint) {

    }
} 

. Я также обновил его на моем сайте .

7
задан xyz 17 February 2012 в 19:48
поделиться