博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate自定义校验器使用(字段在in范围之内)
阅读量:5952 次
发布时间:2019-06-19

本文共 1763 字,大约阅读时间需要 5 分钟。

hot3.png

1.自定义注解类DigitsMustIn

@Constraint(validatedBy = DigitsMustInValidator.class) //具体的实现@Target({java.lang.annotation.ElementType.METHOD,        java.lang.annotation.ElementType.FIELD})@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)@Documentedpublic @interface DigitsMustIn {    String message() default "{}不需在[{}]中"; //提示信息,可以写死,可以填写国际化的key    int[] inArr();    //下面这两个属性必须添加    Class
[] groups() default {}; Class
[] payload() default {};}

2.实现DigitsMustInValidator校验服务

public class DigitsMustInValidator implements ConstraintValidator
{ Integer[] ints; @Override public void initialize(DigitsMustIn constraintAnnotation) { int[] ints = constraintAnnotation.inArr(); this.ints = ArrayUtils.toObject(ints); } @Override public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) { if (ArrayUtils.contains(ints, integer)) { return true; } constraintValidatorContext.disableDefaultConstraintViolation();//禁用默认的message的值 //重新添加错误提示语句 constraintValidatorContext.buildConstraintViolationWithTemplate("["+integer+"]" + "必须在" + Arrays.toString(ints) + "之内").addConstraintViolation(); return false; }}

3.在需要校验的字段上加自定义注解

@DigitsMustIn(inArr = {7, 8, 18})private Integer sourceType;

4.验证

private void validate(Object validateObj) throws WMS3CheckedException {    for (ConstraintViolation constraintViolation : Validation.buildDefaultValidatorFactory().getValidator().validate(validateObj)) {        throw new WMS3CheckedException(WMS3ExceptionCode.UNKNOW_EXCEPTON.getCode(),                constraintViolation.getPropertyPath() + constraintViolation.getMessage());    }}

转载于:https://my.oschina.net/u/2485283/blog/1859311

你可能感兴趣的文章
利用WCF改进文件流传输的三种方式
查看>>
程序员的素养
查看>>
Spring学习总结(2)——Spring的常用注解
查看>>
关于IT行业人员吃的都是青春饭?[透彻讲解]
查看>>
钱到用时方恨少(随记)
查看>>
mybatis主键返回的实现
查看>>
org.openqa.selenium.StaleElementReferenceException
查看>>
Android Intent传递对象为什么要序列化?
查看>>
数论之 莫比乌斯函数
查看>>
linux下查找某个文件位置的方法
查看>>
python之MySQL学习——数据操作
查看>>
懒加载——实现原理
查看>>
Harmonic Number (II)
查看>>
长连接、短连接、长轮询和WebSocket
查看>>
day30 模拟ssh远程执行命令
查看>>
做错的题目——给Array附加属性
查看>>
Url.Action取消字符转义
查看>>
JQuery选择器大全
查看>>
Gamma阶段第三次scrum meeting
查看>>
python3之装饰器修复技术@wraps
查看>>