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

 

原創文章,歡迎轉載,轉載請注明出處!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM