Изучаем Java EE 7 - [45]
Основной входной точкой для валидации является интерфейс Validator. Этот API позволяет проверять экземпляры компонентов, обходясь немногочисленными методами, перечисленными в табл. 3.4. Все эти методы объявляют каждое новое ограничение по одному и тому же образцу.
1. Устанавливается подходящая реализация ConstraintValidator, которая будет использоваться при определении данного ограничения (например, определяется ConstraintValidator для ограничения @Size, применяемого со строкой).
2. Выполняется метод isValid.
3. Если isValid возвращает true, программа переходит к следующему ограничению.
4. Если isValid возвращает false, поставщик валидации компонентов добавляет ConstraintViolation в список нарушений ограничений.
Метод | Описание |
---|---|
Валидирует все ограничения, применяемые с объектом | |
Валидирует все ограничения, касающиеся свойства | |
Валидирует все ограничения, применяемые к свойству при заданном значении | |
BeanDescriptor getConstraintsForClass(Class> clazz) | Возвращает объект дескриптора, описывающий ограничения компонента |
ExecutableValidator forExecutables() | Возвращает делегат для валидации параметров и возвращаемых значений у методов и конструкторов |
Если в ходе этой процедуры валидации происходит какая-либо неисправимая ошибка, то выдается исключение ValidationException. Это исключение может быть специализированным и может указывать на конкретные ситуации (недопустимое определение группы, недопустимое определение ограничения, недопустимое объявление ограничения).
Методы validate, validateProperty и validateValue используются соответственно для валидации целого компонента, свойства или свойства при заданном значении. Все методы принимают параметр varargs, позволяющий указывать группы для валидации. Метод forExecutables предоставляет доступ к ExecutableValidator для валидации методов, параметров конструктора и валидации возвращаемого значения. В табл. 3.5 описан API ExecutableValidator.
Метод | Описание |
---|---|
Валидирует все ограничения, применяемые с параметрами метода | |
method, Object[] params, Class>… groups) | |
Валидирует все ограничения возвращаемого значения, применяемые с методом | |
Валидирует все ограничения, связанные с параметрами конструктора | |
Валидирует все ограничения возвращаемых значений, связанные с конструктором |
Все валидационные методы, перечисленные в табл. 3.4 и 3.5, возвращают множество ConstraintViolation, которое можно перебирать и при этом просматривать, какие ошибки возникли при валидации. Если это множество пустое — значит, валидация прошла успешно. При ошибках в это множество добавляется по экземпляру ConstraintViolation для каждого нарушенного ограничения. ConstraintViolation описывает единую ошибку, связанную с ограничением, а его API дает множество полезной информации о причине ошибки. В табл. 3.6 сделан обзор этого API.
Метод | Описание |
---|---|
String getMessage() | Возвращает интерполированное сообщение об ошибке для данного нарушения |
String getMessageTemplate() | Возвращает неинтерполированное сообщение об ошибке |
T getRootBean() | Возвращает корневой компонент, участвующий в валидации |
Class | Возвращает класс корневого компонента, участвующего в валидации |
Object getLeafBean() | Возвращает дочерний компонент, к которому применяется ограничение |
Path getPropertyPath() | Возвращает путь свойств к значению от корневого компонента |
Object getInvalidValue() | Возвращает значение, которое не соответствует заданному ограничению |
ConstraintDescriptor> getConstraintDescriptor() | Возвращает метаданные об ограничении |
Первый этап валидации компонента — приобрести экземпляр интерфейса Validator. Как и в большинстве спецификаций Java EE, вы можете либо получить Validator программно (если ваш код выполняется вне контейнера), либо внедрить его (если код выполняется в EJB- или веб-контейнере).
Если вы делаете это программно, то необходимо начать с класса Validation, осуществляющего начальную загрузку поставщика валидации компонентов. Его метод buildDefaultValidatorFactory строит и возвращает фабрику ValidatorFactory, которая, в свою очередь, используется для построения Validator. Код выглядит следующим образом:
>ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
>Validator validator = factory.getValidator();
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.