1.0 @Valid
@Valid注解用於校驗,所屬的包: javax.validation.Valid.
你可以定義實體,在實體的屬性上添加校驗規則,在API接收數據時添加@Valid注解,這時你的實體將會開啟一個校驗的功能。
## 空檢查 @NotEmpty:用在集合類上面;不能為null,而且長度必須大於0 @NotBlank: 用在String上面;只能作用在String上,不能為null,而且調用trim()后,長度必須大於0 @NotNull:用在基本類型上;不能為null,但可以為empty。 ## 長度檢查 @Size(min=,max=):驗證對象(Array,Collection,Map,String)長度是否在給定的范圍之內 不要錯用了異常類型,比如在int上不可用@size @Length(min=, max=) : 只適用於String 類型 ## Booelan檢查 @AssertTrue: 驗證 Boolean 對象是否為 true @AssertFalse: 驗證 Boolean 對象是否為 false ## 日期檢查 @Past: 驗證 Date 和 Calendar 對象是否在當前時間之前 @Future: 驗證 Date 和 Calendar 對象是否在當前時間之后 @Pattern: 驗證 String 對象是否符合正則表達式的規則 ## 數值檢查 建議使用在Stirng,Integer類型,不建議使用在int類型上,因為表單值為"" 時無法轉換為int,但可以轉換為Stirng為"",Integer為null @Min: 驗證 Number 和 String 對象是否大等於指定的值 @Max: 驗證 Number 和 String 對象是否小等於指定的值 @DecimalMax: 被標注的值必須不大於約束中指定的最大值. 這個約束的參數是一個通過BigDecimal定義的最大值的字符串表示.小數存在精度 @DecimalMin: 被標注的值必須不小於約束中指定的最小值. 這個約束的參數是一個通過BigDecimal定義的最小值的字符串表示.小數存在精度 @Digits: 驗證 Number 和 String 的構成是否合法 @Digits(integer=,fraction=): 驗證字符串是否是符合指定格式的數字,interger指定整數精度,fraction指定小數精度。
2.0 BindingResult
Spring驗證的錯誤返回
@Valid 和 BindingResult 是一一對應的,如果有多個@Valid,那么每個@Valid后面跟着的BindingResult就是這個@Valid的驗證結果,順序不能亂
1.首先在參數實體類上面加上相關的驗證信息
public class PublicUserForm implements Serializable { private static final long serialVersionUID = 1L; /** * 手機號 */ @NotBlank(message = "{required}") @Pattern(regexp = RegexpConstant.MOBILE_REG, message = "{mobile}") private String telephone; /** * 密碼 */ private String password;
2.controller層
public ResponseResult regist(@Valid PublicUserForm publicUserForm, BindingResult bindingResult) throws Exception { //在這里,我們判斷參數是否通過校驗 if (bindingResult.hasErrors()) { Map<String,String> errorMsg = new HashMap<>(); for (FieldError item:bindingResult.getFieldErrors()) { errorMsg.put(item.getField(),item.getDefaultMessage()); } //自定義的返回,並將錯誤信息返回 return new ResponseResult(false,200, JSON.toJSONString(errorMsg),errorMsg); } PublicUser publicUser = publicUserService.regist(publicUserForm); return new ResponseResult(true,200,"訪問成功!",null); }
轉 : https://www.cnblogs.com/jxd283465/p/12015661.html