【发布时间】:2014-01-28 12:33:32
【问题描述】:
我刚开始为客户的应用程序使用 android saripaar 库。我想为字段添加自定义验证。但是,似乎没有办法创建自定义注释。我必须在验证器中手动输入规则。
如何创建自定义注释?
【问题讨论】:
-
我正在开发 Saripaar v2,它支持自定义注释。准备好后会发布答案。
标签: android validation user-interface saripaar
我刚开始为客户的应用程序使用 android saripaar 库。我想为字段添加自定义验证。但是,似乎没有办法创建自定义注释。我必须在验证器中手动输入规则。
如何创建自定义注释?
【问题讨论】:
标签: android validation user-interface saripaar
(披露:我是作者)
Saripaar v2 允许您定义自定义注释。
这就是你的做法。
第 1 步如下定义您的自定义注释。确保您有 RUNTIME 保留策略,并且您的注释必须针对 FIELD 元素类型。 message 和 messageResId 属性是必需的,因此请注意名称和类型。
@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 上使用。
【讨论】:
@OptionalEmail