Проверка клиента GWT JSR 303


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

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

Спасибо!

Обновление:

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

3 12

3 ответа:

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

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

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

На стороне клиента, чтобы использовать 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 включает некоторую поддержку проверки.

Проверьте витрину Пример .