注意: 必须是经过spring校验的参数才能验证,代码中给的默认值不会验证
Hibernate Validator 是 Bean Validation 的参考实现 。Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。
在日常开发中,Hibernate Validator经常用来验证bean的字段,基于注解,方便快捷高效。
1. Bean Validation 中内置的 constraint
注解 作用
@Valid | 被注释的元素是一个对象,需要检查此对象的所有字段值 |
---|---|
@Size(max, min) | 被注释的元素的大小必须在指定的范围内 |
@Digits (integer, fraction) | 被注释的元素必须是一个数字,其值必须在可接受的范围内 |
2. Hibernate Validator 附加的 constraint
注解 | 作用 |
---|---|
被注释的元素必须是电子邮箱地址 | |
@Length(min=, max=) | 被注释的字符串的大小必须在指定的范围内,有值时才校验值,否则不校验 |
@NotEmpty @NotBlank | 被注释的字符串的必须非空,是否为null或者是EMPTY 检查字符串是不是null 还有被trim的长度是否大于0 |
@Range(min=, max=) | 被注释的元素必须在合适的范围内 |
hibernate补充的注解中,最后3个不常用,可忽略。
主要区分下@NotNull @NotEmpty @NotBlank 3个注解的区别:
@NotNull 任何对象的value不能为null
@NotEmpty 集合对象的元素不为0,即集合不为空,也可以用于字符串不为null
@NotBlank 只能用于字符串不为null,并且字符串trim()以后length要大于0
举个使用的例子:
public class User {
@NotBlank
private String name;
//年龄要大于18岁
@Min(18)
private int age;
@Email
private String email;
//嵌套验证
@Valid
private Product products;
... //省略getter,setter
}
public class Product {
@NotBlank
private String name;
//价格在10元-50元之间
@Range(min=10,max=50)
private int price;
... //省略getter,setter
}
以上内容转载至: https://blog.csdn.net/u011851478/article/details/51842157
Set<ConstraintViolation<Car>> constraintViolations = validator.validateValue( Car.class, "manufacturer", null );
此类中( ConstraintViolation )有很多有用的方法,可以获得校验失败的很多有用的信息。下面就简要介绍下,都可以获得哪些信息。
- getMessage():内部的错误信息。
- 例如:不能为空;
- getMessageTemplate() :非内部的错误信息。
- 例如:{非空的错误提示信息…};
- getRootBean() :被校验的根对象:
- 例如:car;
- getRootBeanClass() :被校验的根兑现的类。
- 例如:Car.class;
- getLeafBean() :得到被应用约束的Bean。
- 例如:car;
- getPropertyPath() :得到来自根对象的被校验的属性的路径。
- 例如:包含一个属性节点,且名字为“manufacturer“;
- getInvalidValue() :得到通过这个约束失败的值。
- 例如:null;
- getConstraintDescriptor() :得到校验失败的约束元数据。
- 例如:关于@NotNull的描述。
判断是否触发了这个约束的元素,可以利用getPropertyPath()方法,利用属性路径。这个方法返回的路径(Path)是一系列节点(Node)的组合,描述元素的路径。
https://blog.csdn.net/sinat_25551085/category_9432059.html 博学谷对应课程(代码有截图)
Hibernate Validator - 有梦就能实现 - 博客园 博学谷对应课程(代码无截图)
https://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html_single/#section-message-interpolation validator官方文档