转载至:
http://www.360doc.com/content/19/0312/17/62719857_821007646.shtml
https://blog.csdn.net/qq_39964694/article/details/81183701
前言
“SpringBoot”前后端分离项目,通常采用Restful接口,我们除了前端进行校验之外,在后端中进行一些字段的校验判断
方案
按照以往的方法,我们通常是对result中的参数进行一个个的判断
例如
@GetMapping(value = "/page")
public Result<DemoEntity> list(@RequestBody Order order) throws Exception {
if(order.getUserName == null){
return "用户名不能为空"
}
if(order.products == null){
return "产品列表不能为空"
}
return "success";
}
如果model中字段过多的话,判定就很多,相对的,维护起来就会比较麻烦。下面是使用注解后的变化:
model
public class Order {
private Long id;
@NotBlank(message = "用户名不能为空")
private String UserName;
@NotNull(message = "产品列表不能为空")
private List<OrdProduct> products;
}
controller
@GetMapping(value = "/page")
public Result<Order> list(@RequestBody @Valid Order order, BindingResult results) throws Exception {
if(results.hasErrors(){
return results.getFieldError().getDefaultMessage();
}
return "success";
}
这样我们就只需要在model字段上加上验证和相应提示语就好了。
常用的校验注解
@Null //被注释的元素必须为null
@NotNull //被注释的元素不能为null
@AssertTrue //被注释的元素必须为true
@AssertFalse //被注释的元素必须为false
@Min(value) //被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) //被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) //被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) //被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max,min) //被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction) //被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past //被注释的元素必须是一个过去的日期
@Future //被注释的元素必须是一个将来的日期
@Pattern(value) //被注释的元素必须符合指定的正则表达式。
@Email //被注释的元素必须是电子邮件地址
@Length //被注释的字符串的大小必须在指定的范围内
@NotEmpty //被注释的字符串必须非空
@Range //被注释的元素必须在合适的范围内
@NotNull,@NotBlank,@Valid自动判定空值 的比较
@NotNull:不能为null,但可以为empty
@NotEmpty:不能为null,而且长度必须大于0
@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0