тег ошибки пружинной формы: проверьте наличие конкретной ошибки (например, отображать недействительным, если не нулевое значение отсутствует) - PullRequest
1 голос
/ 24 января 2012

Итак, у меня есть строка, которую мне нужно проверить, для правильного формата, для которого я использовал шаблон, и для определения правильности введенного значения в соответствии с некоторыми бизнес-правилами, для которых я использовал пользовательский валидатор. Теперь клиент предпочел бы, чтобы сообщение об ошибке, связанное с последним, отображалось только в том случае, если первое не появилось. Но, насколько я знаю, нет никакого способа сделать это различие. Или кто-нибудь может придумать, как это сделать?

1 Ответ

0 голосов
/ 25 января 2012

Хитрость в том, что: есть два разных ограничения (аннотации),

  • , одно для шаблона, которые принимают ноль,
  • и второе, если не ноль.

По умолчанию 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 (я не пробовал, но я надеюсь, что это работает)

...