zoukankan      html  css  js  c++  java
  • Spring框架的@Valid注解

      上一篇文章介绍了springmvc的get请求参数可以是一个自定的对象。那么如何限制这个对象里的参数是否必传呢?

      方法一:在代码逻辑里取出对象里的这个值,手动进行判断
      方法二:使用@Valid注解,在接口请求的时候让Spring自己进行判断

    比较

      如果用上面两个方法进行非空判断,当参数传的是空的时候,

      方法一的返回结果的状态是 200,方法二的返回结果状态是 400;
      方法一需要自定义返回结果并且可以直接在页面中进行展示,方法二的返回结果需要从Response Body中获取。
      方法一复杂,方法二简单。

      所以这两种方法的适用场景是不同的,如果要在页面输出,应该使用方法一,如果只是接口之间调用,那么使用方法二就可以了

    如何使用@Valid注解

    比如请求:
      public String login(@Valid User user) {...}

    User.java 如下:

     1 import org.hibernate.validator.constraints.Length;
     2 import javax.validation.constraints.NotBlank;
     3 
     4 /**
     5  * @author jiashubing
     6  * @since 2019/1/9
     7  */
     8 public class User {
     9     @NotBlank(
    10             message = "姓名不能为空"
    11     )
    12     @Length(
    13             message = "姓名最长为20个字符"
    14             , min = 1
    15             , max = 20
    16     )
    17     private String name;
    18 
    19     @NotBlank(
    20             message = "密码不能为空"
    21     )
    22     @Length(
    23             message = "密码最少为8个字符,最长为30个字符"
    24             , min = 8
    25             , max = 30
    26     )
    27     private String password;
    28 
    29     public String getName() {
    30         return name;
    31     }
    32 
    33     public void setName(String name) {
    34         this.name = name;
    35     }
    36 
    37     public String getPassword() {
    38         return password;
    39     }
    40 
    41     public void setPassword(String password) {
    42         this.password = password;
    43     }
    44 
    45 }

     以下转自:http://blog.51cto.com/825272560/2121519

      @Valid注解可以实现数据的验证,你可以定义实体,在实体的属性上添加校验规则,而在API接收数据时添加@valid关键字,这时你的实体将会开启一个校验的功能。

    @Valid 注解类型

    @Null
    限制只能为null

    @NotNull
    限制必须不为null

    @AssertFalse
    限制必须为false

    @AssertTrue
    限制必须为true

    @DecimalMax(value)
    限制必须为一个不大于指定值的数字

    @DecimalMin(value)
    限制必须为一个不小于指定值的数字

    @Digits(integer,fraction)
    限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction

    @Future
    限制必须是一个将来的日期

    @Max(value)
    限制必须为一个不大于指定值的数字

    @Min(value)
    限制必须为一个不小于指定值的数字

    @Past
    限制必须是一个过去的日期

    @Pattern(value)
    限制必须符合指定的正则表达式

    @Size(max,min)
    限制字符长度必须在min到max之间

    @Past
    验证注解的元素值(日期类型)比当前时间早

    @NotEmpty
    验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)

    @NotBlank
    验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格

    @Email
    验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

    注意,不要错用了异常类型,比如在int上不可用@size

    原创文章,欢迎转载,转载请注明出处!

  • 相关阅读:
    跨平台的好处
    Java生成PDF的另一种方法
    关于如何写小说的文章
    对概念解释得很好的文章列表
    k8s 添加补全脚本
    ingress与ingress-controller
    k8s 暴露服务的几种方式
    DevOps 的生活很有意思但并不容易---《DevOps 实践》读后总结 ----------转载转载转载转载转载转载转载转载转载
    SpringMVC的注解机制:Java中利用反射查找使用指定注解的类---找到指定包下的指定注解类
    Web应用安全威胁与防治--基于OWASP TOP 10 与ESAPI
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/spring_valid.html
Copyright © 2011-2022 走看看