2013-03-06 5 views
5

Я новичок в Java и играю. проходя через образцы приложений. вы можете помочь мне понять, что происходит в этом файле. https://github.com/playframework/Play20/blob/master/samples/java/forms/app/models/User.javaplay framework @Required

Я не понимаю, почему мы объявляем этот интерфейс «общедоступным интерфейсом All {}» и как он используется в этой проверке. "@Required (groups = {All.class, Step1.class})"

ответ

11

@Required является аннотацией JSR-303, созданной в рамках игры. JSR-303 является спецификацией для проверки Javabeans, что позволяет гарантировать, что данные Java bean-компонентов попадают в набор ограничений . Примеры некоторых стандартных аннотаций проверки:

  • @Max - аннотированный элемент должен быть числом, значение которого должно быть ниже или равно заданному максимуму.
  • @Min - аннотированный элемент должен быть числом, значение которого должно быть выше или равно указанному минимуму.
  • @NotNull - Аннотированный элемент не должен быть нулевым.

Каждый JSR-303 аннотаций позволило определить группы, где каждая группа действительно просто класс. Эти группы могут использоваться для выполнения подмножества валидаций для данного компонента. В вашем конкретном примере разработчики определили два интерфейса для представления этих групп - All и Step1. Затем они добавляют группы в аннотации проверки, чтобы указать, что эти проверки принадлежат группе. Так что для ниже класса:

public class MyBean { 
    @Required(groups = {All.class, Step1.class}) 
    @MinLength(value = 4, groups = {All.class}) 
    public String username; 
} 

MyBean bean = new MyBean(); 
ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 
Validator validator = factory.getValidator(); 

Ниже будет выполнять проверку @Required и @MinLength для username поле:

validator.validate(bean, All.class); 

Принимая во внимание следующее будет выполнять только проверку @Required (для username поля):

validator.validate(bean, Step1.class); 
+0

Спасибо, это было очень полезно. – vinos

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