Java验证器?

时间:2010-09-30 16:20:32

标签: java android

我可以使用任何Java验证器库来验证Android应用程序的文本输入吗?

我知道在春天有各种不同类型的验证器,例如检查值是否为int,值是否是有效的电子邮件等等。

在核心java甚至是android中有类似的东西吗?

提前欢呼。如果它已经实施,我不想重新发明轮子。我总是可以起诉java reg表达式来构建我自己的表达式,但是想知道它们是否专门用于电子邮件格式。

4 个答案:

答案 0 :(得分:3)

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

How to Find or Validate an Email Address

答案 1 :(得分:2)

我已经写了一些支持类来解决这个问题。它包含验证器接口,抽象实现,验证结果类和自定义实现验证的2个示例。 1表示文本上的正则表达式,1表示检查复选框是否正确。

以下是我的博客链接,其中包含Android的源代码和一小部分解释表单验证:link text

答案 2 :(得分:1)

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

答案 3 :(得分:1)

是的,我已经创作了一个库来处理Android上的验证。默认情况下,它会验证EditTextCheckBoxRadioButtonSpinner。您还可以使用注释来简化验证。

您不受内置注释或规则的限制。您始终可以扩展库中的Rule类以验证自定义视图和规则。

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

您可以从here检查项目页面。

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

希望这有帮助。

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

是的,你提出的内容是有道理的。要注册新帐户并在同一个网络服务中进行验证,可以拨打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实例。

validator.put(usernameEditText, registerIfUniqueRule);

从你的EventListener中调用异步验证方法。

validator.validateAsync();

你已经完成;)验证器可能有限制,但在你提到的情况下,我们会想到一旦我们习惯了它就会使用API​​的新方法。