SpringBoot 表單驗證@Valid
阿新 • • 發佈:2018-12-29
最近在做專案的時候,需要對呼叫方傳遞過來的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; }