收藏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 : 邮箱地址已存在
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
8
9
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
70.9万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习