【问题标题】:Adding a custom annotation to Android Saripaar向 Android Saripaar 添加自定义注解
【发布时间】:2014-01-28 12:33:32
【问题描述】:

我刚开始为客户的应用程序使用 android saripaar 库。我想为字段添加自定义验证。但是,似乎没有办法创建自定义注释。我必须在验证器中手动输入规则。

如何创建自定义注释?

【问题讨论】:

  • 我正在开发 Saripaar v2,它支持自定义注释。准备好后会发布答案。

标签: android validation user-interface saripaar


【解决方案1】:

(披露:我是作者)

Saripaar v2 允许您定义自定义注释。

这就是你的做法。

第 1 步如下定义您的自定义注释。确保您有 RUNTIME 保留策略,并且您的注释必须针对 FIELD 元素类型。 messagemessageResId 属性是必需的,因此请注意名称和类型。

@ValidateUsing(HaggleRule.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Haggle {
    public int messageResId()   default -1;                     // Mandatory attribute
    public String message()     default "Oops... too pricey";   // Mandatory attribute
    public int sequence()       default -1;                     // Mandatory attribute

    public double maximumAskingPrice();                         // Your attributes
}

第 2 步通过扩展 AnnotationRule 类来定义您的规则。

public class HaggleRule extends AnnotationRule<Haggle, Double> {

    protected HaggleRule(Haggle haggle) {
        super(haggle);
    }

    @Override
    public boolean isValid(Double data) {
        boolean isValid = false;
        double maximumAskingPrice = mRuleAnnotation.maximumAskingPrice();

        // Do some clever validation....

        return isValid;
    }
}

第 3 步注册您的规则。

Validator.registerAnnotation(Haggle.class); // Your annotation class instance

就这么简单。如果您愿意,请查看源代码。 Saripaar v2 现在可以在 Maven Central 上使用。

【讨论】:

  • HagglingPolicy 是在哪里定义的?
  • @T.Coutlakis,简化了这个例子。
  • @RagunathJawahar 即使浏览了您的源代码,也不清楚注释期望什么样的参数,您能否分享一篇博客/文章,或者我真的很乐意帮助您记录项目跨度>
  • 也许你可以添加可选的验证器。 @OptionalEmail
  • 嗨 Ragunath Jawahar - 感谢这些很棒的库,我正在寻找的是或验证字段意味着使用 pin 或 userId 登录,至少其中一个应该填写并检查最小和最大长度可以我们使用 saripaar 来做这些,如果是,请给我一些提示,谢谢
猜你喜欢
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多