Хобрук: Ваш путь к мастерству в программировании

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

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

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

Спасибо!

ОБНОВИТЬ:

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


Ответы:


1

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

Платформа проверки использует проект проверки GWT, который реализует спецификацию «JSR 303: Проверка компонентов».

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

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

На стороне клиента, чтобы использовать GWT-Validation в вашем проекте, вам нужно добавить (вместе с банкой в ​​вашем пути к классам) в 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

Это немного работы, чтобы настроить это правильно, но тогда он работает отлично.

23.11.2010
  • Это именно то, что я искал! Я предполагаю, что ссылка, которую я искал в ответе, это code.google.com/p/gwt. -валидация, правильно? 08.12.2010
  • Официальный проект GWT для поддержки JSR 303 отлично работает с GWT2.4 и не требует реализации IValidatable, вы можете найти все, что вам нужно здесь: code.google.com/p/google-web-toolkit/wiki/BeanValidation. Как клиентская, так и серверная сторона покрыты одной аннотацией к объектам вашего домена или DTO. 21.12.2011
  • это мертвый проект? Я хочу использовать его, но не знаю, могу ли я ему доверять!? 26.02.2012
  • gwt-validation @ gwt-validation.googlecode.com не умер. На самом деле, за последний год или около того произошло некоторое оживление. Цель состоит в том, чтобы не было необходимости в каких-либо специальных реализациях или действиях от имени разработчика. 23.03.2012

  • 2

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

    Он использует Hibernate Validator.

    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);
    
    19.12.2012
  • ой, я видел, что вопрос был обновлен ссылкой, похожей на этот ответ. 19.12.2012

  • 3

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

    Посмотрите пример ShowCase.

    22.11.2010
  • Спасибо за ответ Карлос. В этом примере показано, как можно создать пользовательскую ячейку, которая вручную проверяет ввод данных пользователем. Чего я хочу избежать, так это необходимости дважды писать мою проверку на клиенте и на сервере. 23.11.2010
  • @Javier, если вы достаточно заботитесь о достоверности своих данных, чтобы выполнять проверку в любом месте, вам обязательно следует выполнять проверку на стороне сервера. Проверка на стороне клиента — это просто приятная функция, позволяющая сэкономить время и усилия ваших пользователей. 08.07.2011
  • Новые материалы

    Введение в контекст React
    В этом посте мы поговорим о Context API, который был представлен в React 16, и о том, как вы можете их использовать. Что такое контекст? Глядя на определение из react docs , оно..

    Шлюз с лицензией OSS, совместимый с Apollo Federation v2, появится в WunderGraph
    Сегодня мы рады сообщить, что мы сотрудничаем с поддерживаемой YC Tailor Technologies, Inc. для внедрения Apollo Federation v2. Реализация будет лицензирована MIT (Engine) и Apache 2.0..

    Это оно
    Ну, я официально уволился с работы! На этой неделе я буду лихорадочно выполнять последние требования Думающего , чтобы я мог сосредоточиться на поиске работы. Что именно это значит?..

    7 полезных библиотек JavaScript, которые вы должны использовать в своем следующем проекте
    Усильте свою разработку JavaScript Есть поговорка «Не нужно изобретать велосипед». Библиотеки — лучший тому пример. Это поможет вам написать сложные и трудоемкие функции простым способом...

    Базовое руководство по переносу концепций обучения в глубокое обучение
    Обзор По мере того, как машинное обучение становится все более мощным и продвинутым, модели, обеспечивающие эту расширенную возможность, становятся все больше и начинают требовать огромного..

    C в C.R.U.D с использованием React-Redux
    Если вы использовали React, возможно, вы знакомы с головной болью, связанной с обратным потоком данных. Передача состояния реквизитам от родительских компонентов к дочерним компонентам может..

    5 обязательных элементов современного инструмента конвейера данных
    В цифровом мире предприятия используют конвейеры данных для перемещения, преобразования и хранения огромных объемов данных. Эти конвейеры составляют основу бизнес-аналитики и играют..