2015-06-10 4 views
2

Что такое идея использования групп вкратце? Например, определение класса теперь не имеет групп. Что изменится, если мы включим группы ниже?Что такое использование групп в проверке бобов

// @Size(min = 4, max = 30, groups = LengthGroup.class) 
    @Size(min = 4, max = 30) 
    private String name; 

// @Size(min = 12, max = 120, groups = LengthGroup.class) 
    @Size(min = 12, max = 120) 
    private String address; 

// @Size(min = 5, max = 30, groups = LengthGroup.class) 
    @Size(min = 5, max = 30) 
    @EmailAddress//(groups = EmailGroup.class) 
    private String email; 

p.s. существуют также два соответствующих интерфейса для этих групп.

ответ

0

Часто полезно объявлять одно и то же ограничение более одного раза одной и той же цели с разными свойствами. Вот о чем идет речь. Рассмотрим следующий пример:

public class Address { 
    @ZipCode.List({ 
      @ZipCode(countryCode="fr", groups=Default.class 
        message = "zip code is not valid"), 
      @ZipCode(countryCode="fr", groups=SuperUser.class 
        message = "zip code invalid. Requires overriding before saving.") 
      }) 
    private String zipcode; 
} 

В этом примере оба ограничения применяются к полю ZipCode, но с различными группами и с различными сообщениями об ошибках.

Пример от here.

0

Кроме того, что сказал kocko, они также предназначены для категоризации правил проверки. Цитирование из JSR-303 final spec:

Группы

Группы позволяют ограничить набор ограничений, применяемых во время проверки.

Если вы повторно добавить группы, упомянутые выше, и вызвать validatior так: validator.validate(user, LengthGroup.class);, длины ваших полей будут проверяться только. Это означает, что ограничение @EmailAddress не принимается во внимание.

Если вы вызываете валидатор следующим образом: validator.validate(user, LengthGroup.class, EmailGroup.class);, все ваши ограничения будут проверены.

Примером использования для этой функции является проверка версии пользователя с контактными данными, а другая без нее. Рассмотрим феллинг пример:

@Size(min = 4, max = 30) 
private String name; 

@Size(min = 12, max = 120, groups=WithContactInfo.class) 
private String address; 

@Size(min = 5, max = 30, groups= WithContactInfo.class) 
@EmailAddress(groups = WithContactInfo.class) 
private String email; 

Теперь вы можете проверить, что пользователь не нужно иметь контакты с validator.validate(user), и пользователей, которые должны иметь контактную информацию тоже с validator.validate(user, WithContactInfo.class).

Смежные вопросы