Codenameone 使用验证程序检查电子邮件是否已注册

Codenameone 使用验证程序检查电子邮件是否已注册,codenameone,Codenameone,我有一个带有验证器的注册表,它绑定到一些文本字段和选择器,并绑定到提交按钮 其中一个文本字段用于电子邮件。假设我有一个RESTAPI来知道给定的电子邮件是否已经注册 目前,验证程序只检查给定的电子邮件是否有效。我还想检查它是否已经注册:如果是,验证必须失败,提交按钮必须被禁用,并且必须在发布的文本字段下显示信息标签(在这种情况下,徽标图标没有意义)。它不是输入组件,它是一个标准的简单文本字段 我不知道如何做到这一点。感谢您的支持。在标签下显示某些内容很简单,只需在版面下方添加一个错误标签即可。如

我有一个带有验证器的注册表,它绑定到一些文本字段和选择器,并绑定到提交按钮

其中一个文本字段用于电子邮件。假设我有一个RESTAPI来知道给定的电子邮件是否已经注册

目前,验证程序只检查给定的电子邮件是否有效。我还想检查它是否已经注册:如果是,验证必须失败,提交按钮必须被禁用,并且必须在发布的文本字段下显示信息标签(在这种情况下,徽标图标没有意义)。它不是输入组件,它是一个标准的简单文本字段


我不知道如何做到这一点。感谢您的支持。

在标签下显示某些内容很简单,只需在版面下方添加一个错误标签即可。如果标签为空,则不会显示,也不会占用空间

验证代码是为快速客户端验证而设计的。您所说的是服务器端验证,这是服务器错误的结果。不管怎样,你都需要通过提出请求并失败来分别完成这项工作

在这种情况下,提交按钮可以启用,因为您不一定要延迟提交,但如果在电子邮件检查完成之前按下提交按钮,您可以等待该请求完成

如果你想让它通过验证程序模式,你可以创建一个验证程序,首先返回false(但禁用错误指示),然后在验证程序下面的错误中,你可以写“检查电子邮件可用性”

收到结果后,只需更新验证器值并触发输入的重新验证。您只需再次使用应触发验证的相同文本调用
setText()


请注意,如果您在每次数据更改事件上都请求webservice,这将产生非常糟糕的UI体验。输入完成后,您需要使用计时器发送延迟请求。我想我以前在这里发布过类似的东西。

Validator类不会公开任何方法来显示给定标签中的错误……好的,最后我按照您的建议做了:我根本没有使用Validator来检查电子邮件可用性,而是通过按submit按钮来执行控制。是的。使用验证器方法,您仍然需要手动更新标签。它主要用于与验证器链集成