JavaWeb学习

Hibernate validator

2019-11-23  本文已影响0人  幻影翔

概念

传统
    1、验证代码繁琐,重复劳动
    2、方法内代码显得冗长
    3、每次要看那些参数验证是否完整
    4、spring-boot-starter-web包里面含有hibernate-validator包
用处
    1、在代码中需要写一些字段校验的代码,比如非空,字段长度。
    2、提供了一套比较完整的验证实现方式

校验模式

校验注解

@Valid  被注释的元素是一个对象,需要校验此对象的所有字段
@Null  被注释的元素必须为空
@Email
@NotBlank(message="用户名不能为空")
@Past被注释元素的时间必须为过去的日期
@Size(max,  min)被注释的元素值的大小必须在指定的范围内
@Min(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最小值
@Pattern(value)指定元素符合正则表达式
其他

对比:@NotNull  @NotEmpty  @NotBlank 
@NotNull    任何对象的value不能为null
@NotEmpty   集合对象的元素不为0,即集合不为空,也可以用于字符串不为null
@NotBlank  只能用于字符串不为null,并且字符串trim()以后length要大于0

使用

public Object add(@Valid User user,BindingResult result){
  if(result.hasErrors()){
    ......
  }
   throw new RuntimeException(result.getAllErrors().get(0).getDefaulrMessage());
}

校验工具类

public class ValidatorUtils {
private static Validator validator;

static {
    validator = Validation.buildDefaultValidatorFactory().getValidator();
}

/**
 * 校验对象
 * @param object        待校验对象
 * @param groups        待校验的组
 * @throws RRException  校验不通过,则报RRException异常
 */
public static void validateEntity(Object object, Class<?>... groups)
        throws RRException {
    Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
    if (!constraintViolations.isEmpty()) {
        StringBuilder msg = new StringBuilder();
        for(ConstraintViolation<Object> constraint:  constraintViolations){
            msg.append(constraint.getMessage()).append("<br>");
        }
        throw new RRException(msg.toString());
    }
  }
}
上一篇 下一篇

猜你喜欢

热点阅读