SpringBoot整合表單驗證註解@Validated,以及分組驗證

首先引入jar包前端

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.7.Final</version>
</dependency>

表單註解驗證通常能夠用來 驗證用戶名不能爲空,郵箱格式不正確,手機號應爲11位 ,可是在驗證一部分字段的時候要用到分組的功能java

建立一個包 名字爲group包,建立兩個接口類 git

 

 

 類裏不用寫內容正則表達式

 

添加字段的註解驗證數組

@TableName("user")
@GroupSequence({Insert.class,Update.class,User.class})
public class User extends Model<User> implements Serializable {
 
    private static final long serialVersionUID=1L;
 
    @TableId(value = "ID", type = IdType.AUTO)
    private Long id;
 
    @NotEmpty(groups={Insert.class,Update.class},message = "用戶名不能爲空")
    @Size(groups={Insert.class,Update.class},min =  5,max = 16 ,message = "用戶名要求5-16位")
    private String uName;
 
    @NotEmpty(groups={Insert.class},message = "密碼不能爲空")
    private String uPwd;
 
    @NotEmpty(groups={Insert.class,Update.class},message = "郵箱不能爲空")
    @Email(groups={Insert.class,Update.class},message = "郵箱格式不對")
    private String uEmail;
 
    @NotEmpty(groups={Insert.class,Update.class},message = "手機號不能爲空")
     @Size(groups={Insert.class,Update.class},min =  11,max = 11 ,message = "手機號爲11位有效手機號")
    private String uTel;
     
    @NotEmpty(groups={Insert.class,Update.class},message = "角色不能爲空")
    private String uRank;

驗證前端傳來的數據app

@PostMapping(value = "/registerinfo")
    @ResponseBody
    public Msg register(@RequestBody @Validated({ Insert.class }) User user, BindingResult bindingResult) {
                //獲取驗證註解信息
        if (bindingResult.hasErrors()) {
            return Msg.failure(bindingResult.getFieldError().getDefaultMessage());
        } else {
 
            return "驗證正確";
        }
 
    }

例如以上爲user表的註解驗證spa

 

@NotEmpty  不能爲空    @Size  設置長度   @Emaile  設置郵箱格式   更多的註解能夠頁面最後查詢
@GroupSequence({Insert.class,Update.class,User.class})     //引入兩個接口類
@NotEmpty(groups={Insert.class},message = "密碼不能爲空")   //設置在 @Validated({ Insert.class }) 的時候只驗證密碼,   若是@Validated({ Update.class })的時候,密碼就不驗證了
@NotEmpty(groups={Insert.class,Update.class},message = "用戶名不能爲空")   //在設置 @Validated({ Insert.class })或者 @Validated({ Update.class })的時候能夠驗證用戶名

 

驗證註解hibernate

驗證的數據類型code

說明regexp

@AssertFalse

Boolean,boolean

驗證註解的元素值是false

@AssertTrue

Boolean,boolean

驗證註解的元素值是true

@NotNull

任意類型

驗證註解的元素值不是null

@Null

任意類型

驗證註解的元素值是null

@Min(value=值)

BigDecimal,BigInteger, byte,

short, int, long,等任何Number或CharSequence(存儲的是數字)子類型

驗證註解的元素值大於等於@Min指定的value值

@Max(value=值)

和@Min要求同樣

驗證註解的元素值小於等於@Max指定的value值

@DecimalMin(value=值)

和@Min要求同樣

驗證註解的元素值大於等於@ DecimalMin指定的value值

@DecimalMax(value=值)

和@Min要求同樣

驗證註解的元素值小於等於@ DecimalMax指定的value值

@Digits(integer=整數位數, fraction=小數位數)

和@Min要求同樣

驗證註解的元素值的整數位數和小數位數上限

@Si***=下限, max=上限)

字符串、Collection、Map、數組等

驗證註解的元素值的在min和max(包含)指定區間以內,如字符長度、集合大小

@Past

java.util.Date,

java.util.Calendar;

Joda Time類庫的日期類型

驗證註解的元素值(日期類型)比當前時間早

@Future

與@Past要求同樣

驗證註解的元素值(日期類型)比當前時間晚

@NotBlank

CharSequence子類型

驗證註解的元素值不爲空(不爲null、去除首位空格後長度爲0),不一樣於@NotEmpty,@NotBlank只應用於字符串且在比較時會去除字符串的首位空格

@Length(min=下限, max=上限)

CharSequence子類型

驗證註解的元素值長度在min和max區間內

@NotEmpty

CharSequence子類型、Collection、Map、數組

驗證註解的元素值不爲null且不爲空(字符串長度不爲0、集合大小不爲0)

@Range(min=最小值, max=最大值)

BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子類型和包裝類型

驗證註解的元素值在最小值和最大值之間

@Email(regexp=正則表達式,

flag=標誌的模式)

CharSequence子類型(如String)

驗證註解的元素值是Email,也能夠經過regexp和flag指定自定義的email格式

@Pattern(regexp=正則表達式,

flag=標誌的模式)

String,任何CharSequence的子類型

驗證註解的元素值與指定的正則表達式匹配

@Valid

任何非原子類型

指定遞歸驗證關聯的對象;

如用戶對象中有個地址對象屬性,若是想在驗證用戶對象時一塊兒驗證地址對象的話,在地址對象上加@Valid註解便可級聯驗證

相關文章
相關標籤/搜索