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=) | 被注释的元素必须在合适的范围内 |
@NotBlank | 被注释的字符串的必须非空 |
---|---|
@URL(protocol=, host=, port=, regexp=, flags=) |
被注释的字符串必须是一个有效的url |
@CreditCardNumber |
被注释的字符串必须通过Luhn校验算法, 银行卡,信用卡等号码一般都用Luhn 计算合法性 |
@ScriptAssert (lang=, script=, alias=) |
要有Java Scripting API 即JSR 223 ("Scripting for the JavaTM Platform")的实现 |
@SafeHtml (whitelistType=, additionalTags=) |
classpath中要有jsoup包 |
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 )有很多有用的方法,可以获得校验失败的很多有用的信息。下面就简要介绍下,都可以获得哪些信息。
判断是否触发了这个约束的元素,可以利用getPropertyPath()方法,利用属性路径。这个方法返回的路径(Path)是一系列节点(Node)的组合,描述元素的路径。
https://blog.csdn.net/sinat_25551085/category_9432059.html 博学谷对应课程(代码有截图)
https://www.cnblogs.com/firstdream/p/8832838.html 博学谷对应课程(代码无截图)
https://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html_single/#section-message-interpolation validator官方文档