SpringMVC利用Hibernate validator做字段驗證


1.添加Hiberbate validator相關的jar包

2.字需要驗證的formbean 上添加驗證的注解,內置注解有:

    1. dBean Validation 中內置的 constraint  
    2.    
    3. @Null   被注釋的元素必須為 null  
    4. @NotNull    被注釋的元素必須不為 null  
    5. @AssertTrue     被注釋的元素必須為 true  
    6. @AssertFalse    被注釋的元素必須為 false  
    7. @Min(value)     被注釋的元素必須是一個數字,其值必須大於等於指定的最小值  
    8. @Max(value)     被注釋的元素必須是一個數字,其值必須小於等於指定的最大值  
    9. @DecimalMin(value)  被注釋的元素必須是一個數字,其值必須大於等於指定的最小值  
    10. @DecimalMax(value)  被注釋的元素必須是一個數字,其值必須小於等於指定的最大值  
    11. @Size(max=, min=)   被注釋的元素的大小必須在指定的范圍內  
    12. @Digits (integer, fraction)     被注釋的元素必須是一個數字,其值必須在可接受的范圍內  
    13. @Past   被注釋的元素必須是一個過去的日期  
    14. @Future     被注釋的元素必須是一個將來的日期  
    15. @Pattern(regex=,flag=)  被注釋的元素必須符合指定的正則表達式  
    16.   
    17. Hibernate Validator 附加的 constraint  
    18. @NotBlank(message =)   驗證字符串非null,且長度必須大於0  
    19. @Email  被注釋的元素必須是電子郵箱地址  
    20. @Length(min=,max=)  被注釋的字符串的大小必須在指定的范圍內  
    21. @NotEmpty   被注釋的字符串的必須非空  
    22. @Range(min=,max=,message=)  被注釋的元素必須在合適的范圍內 

可以自己擴展。

用法例子:我們接受表單的驗證bean為ProductUnityFormatModel

public class ProductUnityFormatModel {
private String productId;//產品ID

private String categoryId; //產品分類ID

private List<String> categoryName;//產品名字

private String shopCategoryId;//店鋪分類ID

@Size(min = 1,max = 50,message = "<標題長度1-50字以內>")
private String productName;//產品名稱

private String productCode;//產品編號

@NotNull(message = "<至少上傳一張照片>")
private String[] productImgs;

@NotEmpty(message = "<發貨地不為空>")
private String addrProvinceName;//所在省份

@NotEmpty(message = "<發貨地省市不為空>")
private String addrProvinceCode;//所在省份code

private String addrCityName;//所在市

@NotEmpty(message = "<發貨地市區不為空>")
private String addrCityCode;//所在市code

@Pattern(regexp = "[0-9]+",message = "<庫存數量為純數字>")
private String inventoryNum;//庫存數量

@Pattern(regexp = "[0-9]+[.]?[0-9]*?",message = "<商品原價為純數字或小數>")
private String marketPrice;//市場價

@Pattern(regexp = "[0-9]+[.]?[0-9]*?",message = "<微店價為純數字或小數>")
private String salePrice;//銷售價

@NotEmpty(message = "<商品的詳情不為空>")
private String productDescription;//商品描述

@Pattern(regexp = "[0-9]+[.]?[0-9]*?",message = "<運費為純數字或小數>")
private String freight;//運費

  //省略get和set方法
}


在controller中的請求方法的接受對象添加@Valid注解:(BindingResult必須緊跟着@ModelAttribute注解后面,一個不小心就就夠你調試到頭破還不知道為什么

@RequestMapping(value = "/product/savingProductInformation",method = RequestMethod.POST)
public String savingProductInformation(Model model,@Valid @ModelAttribute("unityFormatModel") ProductUnityFormatModel unityFormatModel, BindingResult result){
if(result.hasErrors()){
  //如果驗證不通過,result.hasErrors()為true
  //todo somthing --可以帶些填了的數據回去,方便回顯,提供友好點的體驗
  return "";//返回到字段驗證失敗的請求頁面
}}


 

在jsp頁面(用其他的渲染模板,自己查下怎么用)

可以用Spring的標簽<form:errors path="填驗證的formbean字段"/>如果該字段不通過驗證,這個標簽會顯示你在驗證注解中填寫的message內容


免責聲明!

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



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