Проверка клиента GWT JSR 303 - PullRequest
12 голосов
/ 22 ноября 2010

Я разрабатываю приложение GWT с бэкэндом Spring, которое использует проверку JSR 303. Приложение может перейти в автономный режим и использовать браузер вместо базы данных HTML5 / Gears.

Каков наилучший способ реализации проверки клиента? До сих пор я нашел gwt-validation framework (http://code.google.com/p/gwt-validation/), но, похоже, он больше не активен.

Спасибо!

UPDATE:

Существует новый официальный проект GWT для поддержки JSR 303 Bean Validation ( ссылка здесь ). ИМО, это путь, когда проект станет достаточно зрелым.

Ответы [ 3 ]

13 голосов
/ 23 ноября 2010

Наша структура проверки - это среда проверки ввода данных на стороне клиента и на сервере. Его роль заключается в обеспечении соответствия бизнес-правил данным, передаваемым с клиентов на сервер.

В структуре валидации используется проект валидации GWT, который реализует спецификацию "JSR 303: Bean Validation".

Идея состоит в том, чтобы украсить классы и поля объектов передачи данных (DTO) аннотациями JSR303 для описания правил их действия.

  1. Каждый Объект Передачи Данных должен быть украшен своими собственными аннотациями проверки.
  2. Каждая реализация службы на стороне сервера должна проверять объекты передачи данных, которые она получает от клиента.

На стороне клиента, чтобы использовать GWT-Validation в вашем проекте, вам нужно добавить (вместе с jar на вашем classpath) в ваш XML-файл модуля GWT

<inherits name="com.google.gwt.validation.Validation" />

Убедитесь, что DTO реализуют com.google.gwt.validation.client.interfaces.IValidatable

Для проверки на стороне клиента используйте

com.google.gwt.validation.client.interfaces.IValidator.validateProperty((T) model, propertyName);

На стороне сервера используйте

com.google.gwt.validation.server.ServerValidator

Нужно немного поработать, чтобы настроить это должным образом, но тогда это работает отлично.

6 голосов
/ 19 декабря 2012

GWT 2.5 имеет новую функцию только для этого: https://developers.google.com/web-toolkit/doc/latest/DevGuideValidation

Используется средство проверки гибернации.

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);
4 голосов
/ 22 ноября 2010

Я еще не использовал его, но GWT 2.1 включает некоторую поддержку валидации.

Проверьте пример ShowCase .

...