zoukankan      html  css  js  c++  java
  • springboot注解@NotNull,@NotBlank,@Valid自动判定空值

    一、前言

           搭建springboot项目,我们都是采用的Restful接口,那么问题来了,当前端调用接口或者是其他项目调用时,我们不能单一靠调用方来控制参数的准确性,自己也要对一些非空的值进行判定。

    二、方案

          按照我们以往的做法,都是对request中的参数一个一个进行非空判定。

         Model:      

     1 public class Order {
     2 
     3 
     4     private Long userID;
     5 
     6     
     7     private Long addressID;
     8 
     9     private String comment;
    10 
    11 }

       

        Controller:

          

     1 @PostMapping("/createOrders")
     2     public String createOrders(@RequestBody Order dto) {
     3         if(dto.getUserID==null)
     4             return "userID不能为空";
     5         if(dto.getAddressID==null)
     6             return "addressID不能为空";
     7         if(dto.getComment==null)
     8             return "comment不能为空";
     9         return "sucess";
    10     }

    这种做法首先是可取的,能达到我们的要求,但是这样如果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(@RequestBody @Valid Order dto, BindingResult results) { 
             if (results.hasErrors()) 
                    return results.getFieldError().getDefaultMessage();
              return "success";
        }

    此时controller应该要加上@Valid ,否则不会验证!

    这样我们就只需要在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 被注释的元素必须在合适的范围内

    完结。

  • 相关阅读:
    阿里云ECS网站备案流程
    python学习之os.walk()
    python学习之pypandoc
    linux下的which
    python学习之range()和xrange()
    Python内置函数之repr()
    python学习之字典
    SQL基础之聚合与排序
    SQL基础教程
    lombok的安装
  • 原文地址:https://www.cnblogs.com/panchanggui/p/11507459.html
Copyright © 2011-2022 走看看