Контролировать порядок аннотаций заказа? - PullRequest
13 голосов
/ 06 апреля 2011

у меня есть поле с двумя аннотациями валидации

@NotEmpty
@Length(min=3,max=100)
String firstName;

Мне просто интересно узнать, как hibernate указывает порядок аннотации валидации, которая будет выполняться первой, и можно ли это настроить?

причина, по которой я спрашиваю, состоит в том, что, если я оставил это поле пустым, иногда первое отображаемое сообщение проверки не является пустым, а в других случаях, если я оставляю его пустым, я получаю сообщение проверки для аннотации длины.

спасибо заранее.

1 Ответ

18 голосов
/ 07 апреля 2011

Используйте группы проверки JSR-303.

Если группы не указаны, ограничение является частью группы проверки bean-компонентов по умолчанию (см .: javax.validation.groups.Default).

Создайте интерфейс дляВаша расширенная (или как вы хотите это называть) группа:

public interface Extended{}

Теперь создайте интерфейс, который будет иметь аннотацию javax.validation.GroupSequence.

@GroupSequence({Default.class, Extended.class})
public interface MySequence {}

Установите группы проверкина ваших ограничениях

@NotEmpty // If no group is specified it is part of the default group
@Length(min=3,max=100, groups = Extended.class)
String firstName;

Передайте MySequence вашему вызову валидатора.

validator.validate(object, MySequence.class);

Как указано вашим @GroupSequence, ограничения по умолчанию будут проверены первыми, и если с нарушениями не будут обнаруженыперейдем к расширенной группе.

...