美文网首页
UI 校验框架android-saripaar简单使用

UI 校验框架android-saripaar简单使用

作者: 静水红阳 | 来源:发表于2019-07-21 17:11 被阅读0次

概念说明

android-saripaar是一个Android用于表单校验的UI校验框架,通过Annotation添加注解来实现UI校验。此框架具有以下几点优势:

  1. 使用简单

只需要导入对应的Jar包即可使用

  1. 易于扩展

可以相对方便的自定义规则,同时相对方便的支持部分其他的Annotation校验。

https://github.com/ragunathjawahar/android-saripaar/

基础使用

引入Jar包

第一步,首先需要引入此jar包才能够使用,例如在Gradle中进行配置或者单独引入,示例如下:

    implementation 'com.mobsandgeeks:android-saripaar:2.0.3'

添加注解规则

此UI框架可以在每个单独需要校验的EditView等需要校验的View中添加注解,从而完成对此View的规则设置,示例如下:

    @NotEmpty
    @Email
    @Order(1)
    private var eText: EditText? = null
    @NotEmpty
    @Order(2)
    private var eText2: EditText? = null

示例代码中,@NotEmpty规则是不为空,@Email是限制邮箱格式,@Order是确定校验顺序。

引入校验

OnCreate()方法中设置

 var validator: Validator = Validator(this)          //引入校验
        validator.setValidationListener(object : Validator.ValidationListener {
            override fun onValidationFailed(errors: MutableList<ValidationError>?) {
            //todo 校验失败回调,可以获取到error List
            }
            override fun onValidationSucceeded() {
            //todo 全部校验成功回调
            }
        })

使用校验

调如下方法完成校验

validator.validate()

注解规则个人理解

注解规则分块

注解规则主要包含两个方面:注解;规则Rule。

注解

注解主要定义了注解名称,注解错误提示信息,最大最小长度等基本规则和提示。

规则Rules

规则Rules可以用来定义具体的规则,包括正则表达式的设定etc.部分jar包自带规则可能会在校验文件里面进行设定。

自定义注解

按照上述理解,简单的注解可以分为两个部分,因此只需要重新定义注解和规则rule即可完成重新设定。

重设注解

注解的整体结构包含三个必设属性和其他自定义属性,示例代码如下:

@ValidateUsing(HaggleRule.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Haggle {
    public int messageResId()   default -1;                     // 必设属性
    public String message()     default "Oops... too pricey";   // 必设属性,用来设置出错信息提示
    public int sequence()       default -1;                     // 必设属性

    public double maximumAskingPrice();                         //自设属性
}
重设规则

重写对应注解的规则Rule, 继承于AnnotationRule。

public class PhoneSpecialRule extends AnnotationRule<PhoneSpecial, String> {

    /*
     * http://stackoverflow.com/questions/1559751/
     * regex-to-make-sure-that-the-string-contains-at-least-one-lower-case-char-upper
     */
    private final Map<PhoneSpecial.Scheme, String> SCHEME_PATTERNS =
            new HashMap<PhoneSpecial.Scheme, String>() {{
                put(PhoneSpecial.Scheme.ANY, ".+");
                put(PhoneSpecial.Scheme.ALPHA, "^[0-9]+$");   //只包含数字
            }};

    protected PhoneSpecialRule(final PhoneSpecial phoneSpecial) {
        super(phoneSpecial);
    }

    @Override
    public boolean isValid(final String password) {
        boolean hasMinChars = password.length() >= mRuleAnnotation.min();
        boolean matchesScheme = password.matches(SCHEME_PATTERNS.get(mRuleAnnotation.scheme()));
        return hasMinChars && matchesScheme;
    }
}

如示例代码所示,主要包含有以下几个方面:

  1. 设置私有属性SCHEME_PATTERNS,可以使用正则表达式来对具体的输入样式进行设定。
  2. 设置构造方法
  3. 重写方法isValid(),重新定义规则,可以将具体的输入样式SCHEME_PATTERNS导入其中,规范输入样式。
自定义规则注册

在进行引入校验之前,需要对自定义的规则进行注册,否则自定义规则无效,示例代码如下。

Validator.registerAnnotation(PhoneSpecial::class.java)

备注:如果项目内存在混淆保护,需要对自定义规则以及注册对象添加混淆保护。

备注

本片内容仅对android-saripaar最简单基本的使用进行了说明。

相关文章

网友评论

      本文标题:UI 校验框架android-saripaar简单使用

      本文链接:https://www.haomeiwen.com/subject/johvlctx.html