转载地址https://blog.csdn.net/qq_33996921/article/details/79568456
关于springboot项目中,controller层对传递对象的校验,可以参照该文进行查看,
点击打开链接http://www.cnblogs.com/myinspire/articles/7649027.html
本文主要针对controller层中,对于单个参数的校验:
1、引入依赖
-
<dependency>
-
<groupId>org.hibernate </groupId>
-
<artifactId>hibernate-validator </artifactId>
-
<version>5.3.1.Final </version>
-
</dependency>
2、首先,需要我们声明一个Bean,注入校验器到Spring Boot的运行环境,负责不能生效对应的@Range
、@Min
、@Max
等validator
包里面提供的注解
@Configuration @EnableAutoConfiguration public class ValidatorConfig { @Bean public MethodValidationPostProcessor methodValidationPostProcessor(){ return new MethodValidationPostProcessor(); } }
3、controller层
特别注意:
1、@Validated要在controller上标注
@Api(value = "type", description = "辅导类型") @RestController @Validated @RequestMapping(value = "type") public class CompositionTypesController extends BaseController { @ApiOperation(value="新增辅导类型", notes="新增辅导类型") @LoginRequired @PostMapping(value = "addCompostionTyp1e") public Response addCompostionTyp1e(@ApiParam(value = "成绩") @Max(value = 60,message = "得分必须小于60") @RequestParam int score, @ApiParam(value = "年龄") @Min(value = 3, message = "年龄大于3岁") @RequestParam int age, @ApiParam(value = "辅导作文类型") @NotNull(message = "辅导作文类型不能为空") @RequestParam(required = false) String name){ //校验 logger.info(String.valueOf(age)); return success(ResponseCode.OK); } }
4、统一异常捕获
@ControllerAdvice public class ExceptionAdvice { /** * 拦截捕捉自定义异常 ConstraintViolationException.class * @param ex * @return */ @ResponseBody @ExceptionHandler(value = ConstraintViolationException.class) public Map ConstraintViolationExceptionHandler(ConstraintViolationException ex) { Map map = new HashMap(); Set<ConstraintViolation<?>> constraintViolations = ex.getConstraintViolations(); Iterator<ConstraintViolation<?>> iterator = constraintViolations.iterator(); List<String> msgList = new ArrayList<>(); while (iterator.hasNext()) { ConstraintViolation<?> cvl = iterator.next(); msgList.add(cvl.getMessageTemplate()); } map.put("status", ExceptionCode.CVL_EXCEPTION); map.put("msg", msgList); return map; } }
5、在swagger中进行接口调试
注:
校验常用的注解如下:
-
校验 false
-
校验 true
-
小于等于value,
-
inclusive= true,是小于等于
-
与上类似
-
小于等于value
-
大于等于value
-
检查Null
-
检查日期
-
正则
-
字符串,集合,map限制大小
-
对po实体类进行校验
@NotNull 和 @NotEmpty 和@NotBlank 区别
@NotEmpty 用在集合类上面
@NotBlank 用在String上面
@NotNull 用在基本类型上