Как выполнить проверку полей на стороне клиента на прокси-объектах?
Не могли бы вы, ребята, дать мне советы, как выполнить проверку полей на лету в приложении 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.