Подтвердить что ты не робот

Проверка клиента 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 (

4b9b3361

Ответ 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 пример.