代码之家  ›  专栏  ›  技术社区  ›  Jono

Java验证器?

  •  1
  • Jono  · 技术社区  · 14 年前

    是否有任何Java验证库可以用来验证Android应用程序的文本输入?

    我知道在Spring中有各种不同类型的验证器,比如检查一个值是否是int,一个值是否是有效的电子邮件等等。

    在核心Java或Android中有什么类似的东西吗?

    提前干杯。我不想重新发明轮子,如果它已经实现了。我总是可以起诉JavaReg表达式来构造我自己的表达式,但想知道它们是不是专门针对电子邮件格式做的。

    4 回复  |  直到 12 年前
        1
  •  2
  •   Ragunath Jawahar cephus    12 年前

    我编写了一些支持类来解决这个问题。它包含一个验证器接口、一个抽象的输入元素、一个validationresult类和两个自定义实现的验证器示例。1用于文本上的正则表达式,以及检查复选框是否选中的简单表达式。

    以下是我的博客的链接,其中包含了源代码和一点关于Android上表单验证的解释: link text

        2
  •  3
  •   Vivin Paliath    14 年前

    通常我会建议 Hibernate Validator 但对于Android来说,这可能是多余的。如果您正在进行简单的表单输入,则可以编写自己的验证方法,并使用正则表达式来验证输入。有几个正则表达式可以验证电子邮件地址:

    How to Find or Validate an Email Address

        3
  •  1
  •   DarkLeafyGreen    14 年前

    您应该编写自己的验证器方法。例如,可以对字符串使用regex模式, java regex tutorial .

        4
  •  1
  •   Ragunath Jawahar cephus    12 年前

    是的,我编写了一个库来处理Android上的验证。它验证 EditText , CheckBox , RadioButton , Spinner 默认情况下。您还可以使用注释来简化验证。

    您不受内置注释或规则的限制。你可以一直延长 Rule 在库中初始化以验证自定义视图和规则。

    它还支持异步验证(比如从远程服务器检查唯一的用户名)。

    您可以从中查看项目页 here .

    我还写了一篇 blog 它描述了当内置规则不足时如何编写自定义规则。

    希望这有帮助。

    编辑(作为对琼尼评论的澄清)

    是的,你所呈现的是有意义的。要注册新帐户并在同一个Web服务中验证,调用可能需要 n 打电话注册一个新帐户,但是我在博客中指定的例子是 n + 1 呼叫注册新帐户。然而,这个例子只是展示了 Validator .

    为了完成你想要的,你可以写一个新的规则。

    Rule<EditText> registerIfUniqueRule = new Rule<EditText>("Username must be unique.") {
    
        public boolean isValid(EditText view) {
            String username = view.getText().toString();
            boolean accountRegistered = false;
    
            // Make a call to your web service
            // Mode code…
    
            return accountRegistered;
        }
    }
    

    现在将此规则添加到 验证器 实例。

    validator.put(usernameEditText, registerIfUniqueRule);
    

    从你的任何一个 EventListener s调用异步验证方法。

    validator.validateAsync();
    

    您已经完成了;)验证程序可能有限制,但在您提到的情况下,我们将考虑使用API的新方法,一旦我们习惯了它。