javascript
jsr 正则验证_Java数据校验(Bean Validation / JSR303)
#簡介
JSR303是JAVA EE6中的子規范。用于對Java Bean的字段值進行校驗,確保輸入進來的數據在語義上是正確的,使驗證邏輯從業務代碼中脫離出來。JSR303是運行時數據驗證框架,驗證之后驗證的錯誤信息會馬上返回。有兩個版本JSR303(BeanValidation1.0)和JSR349(BeanValidation1.1)。
javax.validation:validation-api:jar:1.1.0.Final
實現版本:
org.hibernate:hibernate-validator
org.apache.bval:bval-jsr303
jersery
注解
@NotNull | 引用類型 | 注解元素必須非空
@Null | 引用類型 |元素為空
@Digits | byte,short,int,long及其包裝器,BigDecimal,BigInteger,String| 驗證數字是否合法。屬性:integer(整數部分), fraction(小數部分)
@Future/@Past| java.util.Date, java.util.Calendar | 是否在當前時間之后或之前
@Max/@Min | byte,short,int,long及其包裝器,BigDecimal,BigInteger | 驗證值是否小于等于最大指定整數值或大于等于最小指定整數值
@Pattern | String |驗證字符串是否匹配指定的正則表達式。屬性:regexp(正則), flags(選項,Pattern.Flag值)
@Size | String, Collection, Map, 數組 | 驗證元素大小是否在指定范圍內。屬性:max(最大長度), min(最小長度), message(提示,默認為{constraint.size})
@DecimalMax/@DecimalMin | byte,short,int,long及其包裝器,BigDecimal,BigInteger,String | 驗證值是否小于等于最大指定小數值或大于等于最小指定小數值
@Valid | |驗證值是否需要遞歸調用
@Null
@NotNull
@AssertFalse
@AssertTrue
@DecimalMax(value) 不大于value的數值
@DecimalMin(value) 不小于value的數值
@Digits(integer,fraction) 整數部分不超過integer,小數部分不超過fraction
@Future 將來的日期
@Past 過去的日期
@Max(value) 不大于value的數值
@Min(value) 不小于value的數值
@Pattern(value) 滿足指定正則表達式
@Size(max,min) 長度在min到max之間
實現
引入pom文件
javax.el
javax.el-api
2.2.4
org.hibernate
hibernate-validator
5.1.3.Final
基礎util封裝
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.constraints.NotNull;
import javax.validation.groups.Default;
import org.hibernate.validator.constraints.NotEmpty;
/**
* 參數校驗
*/
public class ValidatorUtil {
private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
public static Map validate(T obj) {
Map errorMap = null;
Set> set = validator.validate(obj, Default.class);
if (set != null && set.size() > 0) {
errorMap = new HashMap();
String property = null;
for (ConstraintViolation cv : set) {
// 這里循環獲取錯誤信息,可以自定義格式
property = cv.getPropertyPath().toString();
if (errorMap.get(property) != null) {
errorMap.get(property).append("," + cv.getMessage());
} else {
StringBuffer sb = new StringBuffer();
sb.append(cv.getMessage());
errorMap.put(property, sb);
}
}
}
return errorMap;
}
}
測試
public class MyBean {
@NotNull
private Long userId;
@NotEmpty
private String email;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
public static void main(String[] args) {
MyBean bean = new MyBean();
Map map = ValidatorUtil.validate(bean);
System.out.println(map);
}
總結
以上是生活随笔為你收集整理的jsr 正则验证_Java数据校验(Bean Validation / JSR303)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python self 序列_pytho
- 下一篇: 小学生算术