2012-02-29 3 views
1

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

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

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

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

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

ответ

2

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

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

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

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

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

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

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

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