springboot注解@NotNull,@NotBlank,@Valid自动判定空值
时间:2021-04-08 13:23:08
收藏:0
阅读:0
搭建springboot项目,我们都是采用的Restful接口,那么问题来了,当前端调用接口或者是其他项目调用时,我们不能单一靠调用方来控制参数的准确性,自己也要对一些非空的值进行判定。
按照我们以往的做法,都是对request中的参数一个一个进行非空判定。
Model: public class Order { private Long userID; private Long addressID; private string comment; } Controller: @PostMapping ( "/createOrders") public string createorders(@RequestBody Order dto){ if(dto.getUserID==null) return "userID不能为空";if(dto.getAddressID==null) return "addressID不能为空";if(dto.getComment==null) return "comment不能为空";return "sucess"; }
这种做法首先是可取的,能达到我们的要求,但是这样如果model字段过多,判定的就很多,相对维护起来就不是那么方便,其次增加controller层的负担,既然我们来到spring4的时代,就应该适应使用注解的趋势,下面是使用注解后的比变化。
Model: public class order { @NotNull(message ="用户ID不能为空"")private Long userID; @NotNull(message =“收货人地址id不能为空")private Long addressID; @NotBlank (message ="备注不为空")private String comment; } Controller: @PostMapping ( "/createOrders") public String createOrders(@ReguestBody @Valid Order dto,BindingResult results){ if(results.hasErrors()) return results.getFieldError().getDefaultMessage(); return " success"; }
这样我们就只需要在model字段上加上非空验证和相应提示语就好了。
常用的校验注解
javax.validation.constraints.NotNullNull被注释的元素必须为null @NotNull被注释的元素不能为null @AssertTrue被注释的元素必须为true @AssertFalse被注释的元素必须为falae @Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMin (value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值@DecimalMax (value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @Size(max , min)被注释的元素的大小必须在指定的范围内。 @Digits(integer,fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内 @Past被注释的元素必须是一个过去的日期 @Future被注释的元素必须是一个将来的日期 @Pattern(value)被注释的元素必须符合指定的正则表达式。 @Email被注释的元素必须是电子邮件地址 @Length被注释的字符串的大小必须在指定的范围内NotEmpty被注释的字符串必须非空 @Range被注释的元素必须在合适的范围内
评论(0)