JSR303

2021-10-15  本文已影响0人  闻乐

新版springboot 需要maven引入

<dependency>

 <groupId>org.springframework.boot</groupId>

 <artifactId>spring-boot-starter-validation</artifactId>

 </dependency>

1.给bean添加校验注解

注解都在javax.validation.constraints ,并定义自己的message提示

@NotBlank(message ="最后修改时间不能为空!")

private DatelastModifyDate;

中文提示在ValidationMessages_zh_cn.properties

2.@Valid 启动校验

3.给校验的bean后紧跟一个BindingResult,就可以获取到校验的结果

public R save(@Valid @RequestBody GameEntity game, BindingResult result){

if(result.hasErrors()){

Map map =new HashMap<>();

//获取校验的错误结果

        result.getFieldErrors().forEach((item)->{

//FieldError 获取到错误提示

        String message =  item.getDefaultMessage();

//获取到错误的属性名字

        String field = item.getField();

map.put(field,message);

});

return R.error(400,"提交的数据不合法!").put("data",map);

}else{

}

gameService.save(game);

return R.ok();

}

正则表达式

/**

* 检索首字母

*/

@NotEmpty

@Pattern(regexp ="/^[a-zA-Z]$/", message ="检索首字母必须是一个字母")

private Stringdescript;

/**

* 排序

*/

@NotNull

@Min(value =0,message ="排序必须大于等于0")

private Integersort;

4.统一的异常处理

@Slf4j

@RestControllerAdvice(basePackages ="com.terry.gamehall.gms.controller")

public class ExceptionControllerAdvice {

@ExceptionHandler(value= MethodArgumentNotValidException.class)

public R handleVaildException(MethodArgumentNotValidException e){

Map map =new HashMap<>();

BindingResult result = e.getBindingResult();

//获取校验的错误结果

        result.getFieldErrors().forEach((item)->{

//FieldError 获取到错误提示

            String message =  item.getDefaultMessage();

//获取到错误的属性名字

            String field = item.getField();

map.put(field,message);

});

return R.error(400,"提交的数据不合法!").put("data",map);

}

}

5.分组校验groups,AddGroup是一个接口

6.自定义校验注解(写在了工程里面)

1.编写一个自定义的校验注解

2.编写一个自定义的校验器

3.关联自定义的校验器和自定义的校验注解

4.可以使用多个校验器试用不同的校验类型

上一篇下一篇

猜你喜欢

热点阅读