如何将字段设为 Android Saripaar 中不需要的电子邮件字段?
How do you make a field an email field not required in Android Saripaar?
我的 Android 应用程序中有一个简单的表单,我正在使用 Android Saripaar 进行验证,其中一个字段是电子邮件地址,根据 the first example in the docs 它应该看起来像像这样:
@NotEmpty
@Email
private EditText emailEditText;
但是我希望它是一个可选字段,所以我省略了 @NotEmpty
注释:
@Email
private EditText emailEditText;
但是当我把它留空时,它可以理解地标记为无效的电子邮件地址。是否可以在不编写自定义规则的情况下使该字段成为可选字段?
由于我们需要一个可选的项目电子邮件字段,我继续根据 this answer. Referred to Saripaar docs for Rules and Annotations 进行了 rule/annotation 组合。
OptionalEmailRule.java
public class OptionalEmailRule extends AnnotationRule<OptionalEmail, String> {
protected OptionalEmailRule(final OptionalEmail email) {
super(email);
}
@Override
public boolean isValid(final String email) {
if(TextUtils.isEmpty(email)){
//email is empty and therefore valid
return true;
}
else{
//email is not empty, proceed as usual
boolean allowLocal = mRuleAnnotation.allowLocal();
return EmailValidator.getInstance(allowLocal).isValid(email);
}
}
}
OptionalEmail.Java
@ValidateUsing(OptionalEmailRule.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface OptionalEmail {
boolean allowLocal() default false;
int sequence() default -1;
int messageResId() default -1;
String message() default "Invalid email";
}
内部验证Activity
注册注解
Validator.registerAnnotation(OptionalEmail.class);
注释字段
@OptionalEmail
public EditText editEmail;
我的 Android 应用程序中有一个简单的表单,我正在使用 Android Saripaar 进行验证,其中一个字段是电子邮件地址,根据 the first example in the docs 它应该看起来像像这样:
@NotEmpty
@Email
private EditText emailEditText;
但是我希望它是一个可选字段,所以我省略了 @NotEmpty
注释:
@Email
private EditText emailEditText;
但是当我把它留空时,它可以理解地标记为无效的电子邮件地址。是否可以在不编写自定义规则的情况下使该字段成为可选字段?
由于我们需要一个可选的项目电子邮件字段,我继续根据 this answer. Referred to Saripaar docs for Rules and Annotations 进行了 rule/annotation 组合。
OptionalEmailRule.java
public class OptionalEmailRule extends AnnotationRule<OptionalEmail, String> {
protected OptionalEmailRule(final OptionalEmail email) {
super(email);
}
@Override
public boolean isValid(final String email) {
if(TextUtils.isEmpty(email)){
//email is empty and therefore valid
return true;
}
else{
//email is not empty, proceed as usual
boolean allowLocal = mRuleAnnotation.allowLocal();
return EmailValidator.getInstance(allowLocal).isValid(email);
}
}
}
OptionalEmail.Java
@ValidateUsing(OptionalEmailRule.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface OptionalEmail {
boolean allowLocal() default false;
int sequence() default -1;
int messageResId() default -1;
String message() default "Invalid email";
}
内部验证Activity
注册注解
Validator.registerAnnotation(OptionalEmail.class);
注释字段
@OptionalEmail public EditText editEmail;