1. 程式人生 > >SpringBoot 表單驗證@Valid

SpringBoot 表單驗證@Valid

       最近在做專案的時候,需要對呼叫方傳遞過來的JSON格式資料項做驗證,用來防範小白搞亂網站和一些低階的黑客技術。SpringBoot提供了強大的表單驗證功能實現。即校驗使用者提交的資料的合理性的,比如是否為空了,年齡必須是不小於18 ,是否是純數字等等。為了專案的優化,可以為每個呼叫方表單建立下面是我的

import org.hibernate.validator.constraints.NotEmpty;

public class OrderForm {

    /**
     * 買家姓名
     */
    @NotEmpty(message = "姓名必填")
    private String name;

    /**
     * 買家手機號
     */
    @NotEmpty(message = "手機號必填")
    private String phone;

    /**
     * 買家地址
     */
    @NotEmpty(message = "地址必填")
    private String address;

    /**
     * 買家微信openid
     */
    @NotEmpty(message = "openid必填")
    private String openid;

    /**
     * 購物車
     */
    @NotEmpty(message = "購物車")
    private String items;
}

驗證限制 說明 

@Null    限制只能為null 
@NotNull   限制必須不為null 
@AssertFalse  限制必須為false 
@AssertTrue   限制必須為true 
@DecimalMax(value)   限制必須為一個不大於指定值的數字 
@DecimalMin(value)    限制必須為一個不小於指定值的數字 
@Digits(integer,fraction)   限制必須為一個小數,且整數部分的位數不能超過integer,小數部分的位數不能超過fraction 
@Future    限制必須是一個將來的日期 
@Max(value)   限制必須為一個不大於指定值的數字 
@Min(value)   限制必須為一個不小於指定值的數字 
@Pattern(value)   限制必須符合指定的正則表示式 
@Size(max,min)   限制字元長度必須在min到max之間 
@Past    驗證註解的元素值(日期型別)比當前時間早 
@NotEmpty  驗證註解的元素值不為null且不為空(字串長度不為0、集合大小不為0) 
@NotBlank   驗證註解的元素值不為空(不為null、去除首位空格後長度為0),不同於@NotEmpty,@NotBlank只應用於字串且在比較時會去除字串的空格 
@Email   驗證註解的元素值是Email,也可以通過正則表示式和flag指定自定義的email格式 

        在後端控制層controller裡面,可以使用註解 @Valid 進行表單驗證,同時,BindingResult類的物件用來獲得表單驗證的結果。

public Map<String, String> create(@Valid OrderForm orderForm, BindingResult bindingResult) {

        if(bindingResult.hasErrors()) {
            log.error("【建立訂單】引數不正確, orderForm={}", orderForm);
            throw new Exception(bindingResult.getFieldError().getDefaultMessage());
        }

        map.put("status", "success");

        return map;
    }