美文网首页
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