Используйте Validator, чтобы проверить, зарегистрирован ли уже адрес электронной почты - PullRequest
1 голос
/ 04 августа 2020

У меня есть регистрационная форма с валидатором, привязанным к некоторым текстовым полям и средствам выбора и привязанным к кнопке отправки.

Одно из этих текстовых полей предназначено для электронной почты. Предположим, у меня есть Rest API, чтобы узнать, зарегистрирован ли данный адрес электронной почты уже или нет.

В настоящее время Validator проверяет только, является ли данный адрес электронной почты действительным. Я также хочу проверить, зарегистрирован ли он уже: если да, проверка должна завершиться неудачей, кнопка отправки должна быть отключена, а информативная метка должна отображаться под рассматриваемым текстовым полем (значок эмблемы не имеет смысла в этом case). Это не InputComponent, это стандартное простое TextField.

Я не знаю, как этого добиться. Спасибо за вашу поддержку.

1 Ответ

1 голос
/ 04 августа 2020

Показать что-либо под меткой легко, просто добавьте метку ошибки ниже в макет. Если метка пуста, она не будет отображаться и не займет места.

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

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

Если вы хотите, чтобы это было go через шаблон валидатора, вы можете просто создать валидатор, который сначала возвращает false (но отключит индикацию ошибок), а затем в Ошибка под валидатором вы можете написать «проверка доступности электронной почты».

После получения результата вы просто обновляете значение валидатора и запускаете повторную проверку ввода. Вы можете просто вызвать setText() снова с тем же текстом, который должен запускать проверку.

Обратите внимание, что если вы делаете запрос веб-службы при каждом событии изменения данных, это приведет к довольно ужасному опыту пользовательского интерфейса. Вам нужно использовать таймер для отправки отложенного запроса, когда ввод будет завершен. Кажется, я писал что-то подобное в прошлом здесь.

...