Я использую проверку на основе аннотаций 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 extends Payload>[] 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) {
}
}
. Я также обновил его на моем сайте .