建立网站一般多少钱,wordpress评论跳过验证,wordpress文章固定格式,做博客和做网站#简介JSR303是JAVA EE6中的子规范。用于对Java Bean的字段值进行校验#xff0c;确保输入进来的数据在语义上是正确的#xff0c;使验证逻辑从业务代码中脱离出来。JSR303是运行时数据验证框架#xff0c;验证之后验证的错误信息会马上返回。有两个版本JSR303(BeanValidatio…#简介JSR303是JAVA EE6中的子规范。用于对Java Bean的字段值进行校验确保输入进来的数据在语义上是正确的使验证逻辑从业务代码中脱离出来。JSR303是运行时数据验证框架验证之后验证的错误信息会马上返回。有两个版本JSR303(BeanValidation1.0)和JSR349(BeanValidation1.1)。javax.validation:validation-api:jar:1.1.0.Final实现版本org.hibernate:hibernate-validatororg.apache.bval:bval-jsr303jersery注解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 | |验证值是否需要递归调用NullNotNullAssertFalseAssertTrueDecimalMax(value) 不大于value的数值DecimalMin(value) 不小于value的数值Digits(integer,fraction) 整数部分不超过integer,小数部分不超过fractionFuture 将来的日期Past 过去的日期Max(value) 不大于value的数值Min(value) 不小于value的数值Pattern(value) 满足指定正则表达式Size(max,min) 长度在min到max之间实现引入pom文件javax.eljavax.el-api2.2.4org.hibernatehibernate-validator5.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 {NotNullprivate Long userId;NotEmptyprivate 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);}