1.添加Hiberbate validator相關的jar包
2.字需要驗證的formbean 上添加驗證的注解,內置注解有:
- dBean Validation 中內置的 constraint
- @Null 被注釋的元素必須為 null
- @NotNull 被注釋的元素必須不為 null
- @AssertTrue 被注釋的元素必須為 true
- @AssertFalse 被注釋的元素必須為 false
- @Min(value) 被注釋的元素必須是一個數字,其值必須大於等於指定的最小值
- @Max(value) 被注釋的元素必須是一個數字,其值必須小於等於指定的最大值
- @DecimalMin(value) 被注釋的元素必須是一個數字,其值必須大於等於指定的最小值
- @DecimalMax(value) 被注釋的元素必須是一個數字,其值必須小於等於指定的最大值
- @Size(max=, min=) 被注釋的元素的大小必須在指定的范圍內
- @Digits (integer, fraction) 被注釋的元素必須是一個數字,其值必須在可接受的范圍內
- @Past 被注釋的元素必須是一個過去的日期
- @Future 被注釋的元素必須是一個將來的日期
- @Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達式
- Hibernate Validator 附加的 constraint
- @NotBlank(message =) 驗證字符串非null,且長度必須大於0
- @Email 被注釋的元素必須是電子郵箱地址
- @Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內
- @NotEmpty 被注釋的字符串的必須非空
- @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內容