BindingResult的使用


BindingResult用在實體類校驗信息返回結果綁定。

實體類常用的校驗注解有:

@Null  被注釋的元素必須為null
@NotNull  被注釋的元素不能為null
@AssertTrue  該字段只能為true
@AssertFalse  該字段的值只能為false
@Min(value)  被注釋的元素必須是一個數字,其值必須大於等於指定的最小值
@Max(value)  被注釋的元素必須是一個數字,其值必須小於等於指定的最大值
@DecimalMin("value")  被注釋的元素必須是一個數字,驗證小數的最小值
@DecimalMax("value")  被注釋的元素必須是一個數字,驗證小數的最大值
@Size(max,min)  查該字段的size是否在min和max之間,可以是字符串、數組、集合、Map等
@Digits(integer,fraction) 檢查是否是一種數字的整數、分數,小數位數的數字
@Past  被注釋的元素必須是一個過去的日期
@Future  被注釋的元素必須是一個將來的日期
@Pattern(regexp = "[abc]") 被注釋的元素必須符合指定的正則表達式。
@Email 被注釋的元素必須是電子郵件地址
@Length(max=5,min=1,message="長度在1~5")    檢查所屬的字段的長度是否在min和max之間,只能用於字符串
@NotEmpty  被注釋的字符串必須非空
@Range  被注釋的元素必須在合適的范圍內   

@CreditCardNumber 對信用卡號進行一個大致的驗證

@NotBlank 不能為空,檢查時會將空格忽略

@NotEmpty 不能為空,這里的空是指空字符串

以上注解在使用時,都可以設置自定義message提示信息。

@ApiModel(value ="TestEntity")
public class TestEntity implements Serializable{
 
    private static final long serialVersionUID = 1L;
    
    @ApiModelProperty(value = "唯一id")
    private Long id;
    
    @Size(max=10,message="最大長度為10")
    @ApiModelProperty(value = "名稱")
    private String name;
    
    @NotNull(message="參數不能為空")
    @ApiModelProperty(value = "年齡")
    private Integer age;
 
    //getter setter...
    
}

 

 

public class TestController {
 
    @PostMapping("/a")
    @ApiOperation(value = "測試", notes = "")
    public void test(@RequestBody @Valid TestEntity test,BindingResult bindingResult) {
        System.out.println(test.toString());
        if (bindingResult.hasErrors()) {
            throw new 自定義Exception("錯誤提示碼",bindingResult.getFieldError().getDefaultMessage());
        }
    }
}

 

 

 

@Valid和BindingResult配套使用,@Valid用在參數前,BindingResult作為校驗結果綁定返回。

bindingResult.hasErrors()判斷是否校驗通過,校驗未通過,bindingResult.getFieldError().getDefaultMessage()獲取在TestEntity的屬性設置的自定義message,如果沒有設置,則返回默認值"javax.validation.constraints.XXX.message"。

 

注意:在實體類使用校驗注解時,controller一定要使用bindingResult處理校驗結果,且實體類作為查詢參數時,避免被其他方法使用,不然的地方需要限制,有的沒有,不需要限制的方法會報錯。

 


免責聲明!

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



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