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 被注释的元素必须在合适的范围内

    完结。

  • 相关阅读:
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    449. Serialize and Deserialize BST
    114. Flatten Binary Tree to Linked List
    199. Binary Tree Right Side View
    173. Binary Search Tree Iterator
    98. Validate Binary Search Tree
    965. Univalued Binary Tree
    589. N-ary Tree Preorder Traversal
    eclipse设置总结
  • 原文地址:https://www.cnblogs.com/panchanggui/p/11507459.html
Copyright © 2011-2022 走看看