Hibernate validator驗證


1.背景

在我們日常后台的開發中,涉及到很多的字段驗證。

    public void test(@RequestBody LoginRequest request) {  
            if (request.getUsername() != null && request.getUsername().length() > 0) {  
               。。。
            }  
        }  

 

如果request有很多參數,或者是一個表單提交,有很多字段,那我們不是要寫很多這樣的if判斷,可是我們看這樣的驗證大部分都是相同的,唯獨就是字段不一樣,那有沒有什么便捷的方法呢? 有,就是Hibernate Validateor驗證框架,他可以使我們直接使用注解的方式,完成字段驗證,加上注解后,剩下的我們只關注自己的邏輯了

 

2.添加依賴

 

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

 

 

3.常用注解

 

 

 4.當錯誤的時候,異常提示信息

    javax.validation.constraints.AssertFalse.message = must be false  
    javax.validation.constraints.AssertTrue.message  = must be true  
    javax.validation.constraints.DecimalMax.message  = must be less than ${inclusive == true ? 'or equal to ' : ''}{value}  
    javax.validation.constraints.DecimalMin.message  = must be greater than ${inclusive == true ? 'or equal to ' : ''}{value}  
    javax.validation.constraints.Digits.message      = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected)  
    javax.validation.constraints.Future.message      = must be in the future  
    javax.validation.constraints.Max.message         = must be less than or equal to {value}  
    javax.validation.constraints.Min.message         = must be greater than or equal to {value}  
    javax.validation.constraints.NotNull.message     = may not be null  
    javax.validation.constraints.Null.message        = must be null  
    javax.validation.constraints.Past.message        = must be in the past  
    javax.validation.constraints.Pattern.message     = must match "{regexp}"  
    javax.validation.constraints.Size.message        = size must be between {min} and {max}  
      
    org.hibernate.validator.constraints.CreditCardNumber.message = invalid credit card number  
    org.hibernate.validator.constraints.Email.message            = not a well-formed email address  
    org.hibernate.validator.constraints.Length.message           = length must be between {min} and {max}  
    org.hibernate.validator.constraints.NotBlank.message         = may not be empty  
    org.hibernate.validator.constraints.NotEmpty.message         = may not be empty  
    org.hibernate.validator.constraints.Range.message            = must be between {min} and {max}  
    org.hibernate.validator.constraints.SafeHtml.message         = may have unsafe html content  
    org.hibernate.validator.constraints.ScriptAssert.message     = script expression "{script}" didn't evaluate to true  
    org.hibernate.validator.constraints.URL.message              = must be a valid URL  
    org.hibernate.validator.constraints.br.CNPJ.message          = invalid Brazilian corporate taxpayer registry number (CNPJ)  
    org.hibernate.validator.constraints.br.CPF.message           = invalid Brazilian individual taxpayer registry number (CPF)  
    org.hibernate.validator.constraints.br.TituloEleitor.message = invalid Brazilian Voter ID card number  

 

 

 5.在Controller里面驗證使用

@RequestMapping("/register")

public CommonResp register(@Valid @RequestBody RegisterBean register,  BindingResult bingingresult) {

      // 如果驗證不通過,錯誤信息會在BindingResult這個對象中

    if (bingingresult.hasErrors()) {

              return CommonResp(ErrorCode.xxx,  bingingresult.getErrors().get(0).getDefaultMessage());

    }

}

 

 

 

6.也可以自定義錯誤提示信息

public class UserBean {

    @NotEmpty(message="姓名不能為空")
    private String name;

    @Range(min=20,max=120,message="年齡在20到120歲之間")
    private int age;

    ...getter/setter...
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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