Как выполнить проверку полей на стороне клиента на прокси-объектах?

Не могли бы вы, ребята, дать мне советы, как выполнить проверку полей на лету в приложении GWT на стороне клиента?

Я говорю о проверке значения поля после того, как оно потеряет фокус, чтобы я мог сообщить пользователю, что необходимо исправить.

Я запутался, потому что я использую RequestFactory, поэтому на стороне клиента нет реальных компонентов, на которые ссылается JSR 303.

Плюс я бы хотел выйти за рамки @NotNull или же @Size ограничения. Например, я хотел бы иметь возможность проверить, правильно ли был введен адрес электронной почты, или почтовый адрес содержит номер здания и т. Д.

Ссылки на библиотеки и примеры кода были бы очень полезны.

1 ответ

Решение

Для проверки на лету - Regex и ChangeListener ваши друзья.

Зарегистрируйте слушателей изменений для полей вашего текстового поля.

Выполните регулярное выражение для содержимого приемлемого адреса электронной почты.

http://www.regular-expressions.info/email.html

myTextBox.addChangeListener( new ChangeListener() {
   void onChange(Widget sender) {
      if(!sender.getValue().matches("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$")) {
         sender.setFocus();
   }
}

Regex также работает для валидации JSR 303.

@Pattern("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$")
private String sender;

Наконец, я нашел этот отличный пост в блоге, в котором описывается, как выполнить проверку JSR 303 непосредственно из клиента GWT (сервер не требуется) путем расширения и настройки AbstractGwtValidatorFactory.

Другие вопросы по тегам