Хитрость в том, что: есть два разных ограничения (аннотации),
- , одно для шаблона, которые принимают ноль,
- и второе, если не ноль.
По умолчанию javax.validation.constraints.Pattern
«валидатор» принимает ноль.
Принимает строку.null
элементы считаются действительными.(javax.validation.constraints.Pattern javadoc)
В итоге вам нужно сделать следующее:
@NotNull(message="{validation.notNull}")
@Pattern(pattern="123" message="{validation.notPattern}")
String myString;
Добавлено:
(Комментарий)
Не совсем желаемое поведение, так как я хочу повторно использовать объект bean, но условия не одинаковы для каждой страницы.- Джек Никельс 5 минут назад
В этом случае вы можете использовать так называемый groups
(см. Спецификация проверки бина JSR303, глава 4.1.2, группы - также естьпример).Используйте группу по умолчанию для @Pattern
и другую группу для @NotNull
.Теперь вы можете включить или отключить правила проверки в соответствии с группами, которые вы указали для проверки.
validator.validate(myObject, Default.class);
validator.validate(myObject, MyGroup.class);
Осталась одна проблема: в Spring 3.0 вы не можете указать группу, которую хотите использовать для процесса автоматической проверки.,Но в 3.1 вы можете, в соответствии с этим запросом функции SPR-6373 (я не пробовал, но я надеюсь, что это работает)