Проверка клиента GWT JSR 303
Я разрабатываю приложение GWT с бэкэндом Spring, который использует проверку JSR 303. Приложение может перейти в автономный режим и вместо этого использовать базу данных браузера HTML5/Gears.
Как лучше всего реализовать проверку клиента? До сих пор я нашел GWT-validation framework (http://code.google.com/p/gwt-validation/) но, похоже, он больше не активен.
Спасибо!
Обновление:
Существует новый официальный проект GWT для поддержки проверки JSR 303 Bean (ссылка здесь ). ИМО это путь, который нужно пройти, как только проект будет достаточно зрелым.
3 ответа:
Наша система проверки - это система проверки ввода данных на стороне клиента и сервера. Его роль заключается в обеспечении соответствия бизнес-правил данным, передаваемым от клиентов на сервер.
Структура проверки использует проект проверки GWT, который реализует спецификацию" JSR 303: Bean Validation".
Идея состоит в том, чтобы украсить классы и поля объектов передачи данных (DTO) аннотациями JSR303 для описания их правил валидности.
- Каждая Передача Данных Объекты должны быть украшены собственными аннотациями проверки.
- каждая реализация серверной службы должна проверять объекты передачи данных, которые она получает от клиента.
На стороне клиента, чтобы использовать GWT-Validation в вашем проекте, вам нужно добавить (вместе с jar на вашем пути к классу) в ваш xml-файл модуля GWT
<inherits name="com.google.gwt.validation.Validation" />
Убедитесь, что DTOs реализует com.гугл.ГВт.утверждение.клиент.межфазные границы.IValidatable
Для проверки на стороне клиента использовать
com.google.gwt.validation.client.interfaces.IValidator.validateProperty((T) model, propertyName);
На стороне сервера используйте
com.google.gwt.validation.server.ServerValidator
Это немного работы, чтобы настроить это должным образом, но тогда он работает отлично.
GWT 2.5 имеет новую функцию именно для этого : https://developers.google.com/web-toolkit/doc/latest/DevGuideValidation
Он использует валидатор Hibernate.
1) вам нужно будет расширить AbstractGwtValidatorFactory и применить свой боб, например:
public final class SampleValidatorFactory extends AbstractGwtValidatorFactory { /** * Validator marker for the Validation Sample project. Only the classes and groups listed * in the {@link GwtValidation} annotation can be validated. */ @GwtValidation(Person.class) public interface GwtValidator extends Validator { } @Override public AbstractGwtValidator createValidator() { return GWT.create(GwtValidator.class); } }
2) затем добавьте это в свой gwt.xml:
<inherits name="org.hibernate.validator.HibernateValidator" /> <replace-with class="yourpackage.SampleValidatorFactory"> <when-type-is class="javax.validation.ValidatorFactory" /> </replace-with>
3) Проверьте ваш Боб
Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); Set<ConstraintViolation<Person>> violations = validator.validate(person);
Я еще не использовал его,но GWT 2.1 включает некоторую поддержку проверки.
Проверьте витрину Пример .