Проверка клиента GWT JSR 303
Я разрабатываю приложение GWT с бэкэнд Spring, который использует проверку JSR 303. Приложение может работать в автономном режиме и вместо этого использовать базу данных браузера HTML5/Gears.
Каков наилучший способ реализации проверки клиента? До сих пор я нашел gwt-validation framework (http://code.google.com/p/gwt-validation/), но кажется, что он больше не активен.
Спасибо!
UPDATE:
Существует новый официальный проект GWT для поддержки ссылки JSR 303 Bean Validation (
Ответы
Ответ 1
Наша структура проверки - это система проверки достоверности ввода данных на стороне клиента и на стороне сервера. Его роль заключается в обеспечении соответствия бизнес-правил данным, переданным от клиентов серверу.
В рамках проверки используется проект GWT Validation, который реализует спецификацию "JSR 303: Bean Validation".
Идея состоит в том, чтобы украсить классы и поля Data Transfer Objects (DTO) аннотациями JSR303, чтобы описать их правила действительности.
- Каждый объект передачи данных должен быть украшен собственными аннотациями проверки.
- Каждая реализация серверной службы должна проверять объекты передачи данных, которые она получает от клиента.
На стороне клиента, чтобы использовать GWT-валидацию в вашем проекте, вам нужно добавить (вместе с банкой на пути к классу) в свой XML файл модуля GWT
<inherits name="com.google.gwt.validation.Validation" />
Убедитесь, что DTO реализуют com.google.gwt.validation.client.interfaces.Validatable
Для проверки на стороне клиента используйте
com.google.gwt.validation.client.interfaces.IValidator.validateProperty((T) model, propertyName);
На стороне сервера используйте
com.google.gwt.validation.server.ServerValidator
Немного работы, чтобы правильно настроить это, но тогда он отлично работает.
Ответ 2
В GWT 2.5 есть новая функция:
https://developers.google.com/web-toolkit/doc/latest/DevGuideValidation
Он использует валидатор Hibernate.
1) Вам нужно будет расширить AbstractGwtValidatorFactory и применить ваш bean например.
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) Подтвердите свой bean
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Person>> violations = validator.validate(person);
Ответ 3
Я еще не использовал его, но GWT 2.1 содержит некоторую поддержку валидации.
Проверьте ShowCase пример.