定义注解

实现一个只能输入指定状态的约束条件

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME; @Target( { METHOD, FIELD, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = StatusValidator.class)
@Documented
public @interface ValidStatus {
String message() default "状态错误 ";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
/**
* 有效的状态值集合,默认{1,2}
*/
int[] value() default {1,2};
}

定义校验类

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.Arrays;
import java.util.List; /**
* 校验状态是否属于指定状态集
(ConstraintValidator后指定的泛型对象类型为
注解类和注解注释的字段类型<ValidStatus, Integer>)
*/
public class StatusValidator implements ConstraintValidator<ValidStatus, Integer> {
private Integer[] validStatus; @Override
public void initialize(ValidStatus validStatus) {
int[] ints = validStatus.value();
int n = ints.length;
Integer[] integers = new Integer[n];
for (int i = 0; i < n; i++) {
integers[i] = ints[i];
}
this.validStatus = integers;
} @Override
public boolean isValid(Integer n, ConstraintValidatorContext constraintValidatorContext) {
List<Integer> status = Arrays.asList(validStatus);
if (status.contains(n)) {
return true;
}
return false;
}
}

程序中使用

public class QueryDTO {
@ValidStatus
@NotNull
private Integer type;
//...省略n行代码
}
@RestController
@RequestMapping(value = "xxx")
public class DemoController {
//...省略n行代码
@PostMapping(value = "/testUrl")
public Response<ResultVO> getXXXList(@RequestBody @Valid QueryDTO dto){
//...省略n行代码
} }

也可以这样用:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
Set<ConstraintViolation<QueryDTO>> constraintViolations =
validator.validate(queryDTO);

最新文章

  1. java系统高并发解决方案-转
  2. Multiprotocol Label Switching (MPLS)
  3. python中配置文件写法
  4. Xcode 中的黄色文件夹/蓝色文件夹
  5. Linux console on LCD
  6. [Testing] 測試理論電子文件
  7. centos nginx install openssl
  8. 一起来学linux:NFS服务器搭建
  9. ④bootstrap列表使用基础案例
  10. 【自制插件】将MMD4Mecanim转换的MMD模型导入maya
  11. CSS3 font-face使用
  12. bootstrap的引用和注意事项
  13. python网站开发准备ubuntu14.04安装mysql实现windows管理
  14. Java学习--循环语句1
  15. [SQLite][Error Code] 21 misuse
  16. 在控制台远程连接mysql数据库时,出现ERROR 2049 (HY000)错误
  17. Echart 改变X轴、Y轴、折线的颜色和数值
  18. [转] 智能合约开发环境搭建及Hello World合约
  19. 发送请求时params和data的区别
  20. Ubuntu 入门安装

热门文章

  1. python学习笔记(断言assert)
  2. HDU 1045 dfs + 回溯
  3. iOS导航栏的正确隐藏方式
  4. JMeter VS LoadRunner
  5. vue图片上传组件
  6. Oracle 通过dblink和job方式实现两个数据库表之间数据同步
  7. [BZOJ2727][HNOI2012]双十字
  8. flash exe to flv swf
  9. 使用ffmpeg步骤(转)
  10. .NET泛型解析(下)