手册

目录

自定义验证器

收藏415

阅读11891

更新时间2022-04-11

写代码前先了解一个新的注解@Validator,它的作用是声明一个类为验证器,它的参数需要绑定自定义验证器对应的注解,这个注解的作用与@VRequried等注解是一样的,开发人员可以通过该注解配置验证规则;

本例中,我们创建一个简单的自定义验证器,用来验证当前用户输入的邮箱地址是否已存在;

  • 创建自定义验证器注解:

    @Target({ElementType.FIELD, ElementType.PARAMETER})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface VEmailCanUse {
    
        /**
         * @return 自定义验证消息
         */
        String msg() default "";
    }
  • 实现IValidator接口并声明@Validator注解:

    @Validator(VEmailCanUse.class)
    public class EmailCanUseValidator implements IValidator {
    
        public ValidateResult validate(ValidateContext context) {
            ValidateResult _result = null;
            if (context.getParamValue() != null) {
                // 假定邮箱地址已存在
                VEmailCanUse _anno = (VEmailCanUse) context.getAnnotation();
                _result = new ValidateResult(context.getParamName(), StringUtils.defaultIfBlank(_anno.msg(), "邮箱地址已存在"));
            }
            return _result;
        }
    }
  • 测试代码:

    public class VEmailCanUseBean {
    
        @VRequried
        @VEmail
        @VEmailCanUse
        private String email;
    
        //
        // 此处省略了Get/Set方法
        //
    }
    
    public static void main(String[] args) throws Exception {
        YMP.get().init();
        try {
            Map _params = new HashMap();
            _params.put("ext.email", "demo@163.com");
    
            Map _results = Validations.get().validate(VEmailCanUseBean.class, _params);
            //
            for (Map.Entry _entry : _results.entrySet()) {
                System.out.println(_entry.getKey() + " : " + _entry.getValue().getMsg());
            }
        } finally {
            YMP.get().destroy();
        }
    }
  • 执行结果:

    ext.email : 邮箱地址已存在

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号