javaBean验证框架(7)—使用@valid实现对象关联验证
来源:互联网 发布:fwt算法 编辑:程序博客网 时间:2024/05/29 19:35
javaBean验证框架(7)—使用@valid实现对象关联验证
根据Bean验证规范,@Valid注解在对象引用上,从而实现级联验证。关联对象自身也可以包含级联引用,因此实现递归验证过程。该特性也被称为”对象图验证”。
示例说明
这里定义两个类,Driver和DriverLicense类,其中后者引用Driver类,从而用于演示级联验证。
Driver类
import javax.validation.constraints.Min;import javax.validation.constraints.NotNull;import javax.validation.constraints.Past;import java.util.Date;public class Driver { @NotNull private String fullName; @Min(100) private int height; @Past @NotNull private Date dateOfBirth; public Driver(String fullName, int height, Date dateOfBirth) { this.dateOfBirth = dateOfBirth; this.fullName = fullName; this.height = height; }}
DriverLicense类
import javax.validation.Valid;import javax.validation.constraints.Digits;import javax.validation.constraints.NotNull;public class DriverLicense { @NotNull @Valid private Driver driver; @Digits(integer = 7, fraction = 0) private int number; public DriverLicense(Driver driver, int number) { this.driver = driver; this.number = number; }}
演示验证类
import com.dataz.entity.Driver;import com.dataz.entity.DriverLicense;import javax.validation.*;import java.text.ParseException;import java.util.Date;import java.util.Set;public class ValidAnnotationDemo5 { private static final Validator validator; //获得验证器实例 static { Configuration<?> config = Validation.byDefaultProvider().configure(); ValidatorFactory factory = config.buildValidatorFactory(); validator = factory.getValidator(); factory.close(); } public static void main(String[] args) throws ParseException { Driver driver = new Driver("Joseph Waters", 60, new Date(System.currentTimeMillis() + 100000)); DriverLicense dl = new DriverLicense(driver, 3454343); Set<ConstraintViolation<DriverLicense>> violations = validator.validate(dl); if (violations.size() == 0) { System.out.println("No violations."); } else { System.out.printf("%s violations:%n", violations.size()); violations.stream() .forEach(ValidAnnotationDemo5::printError); } } private static void printError(ConstraintViolation<?> violation) { System.out.println(violation.getPropertyPath() + " " + violation.getMessage()); }}
输出结果
2 violations:
driver.dateOfBirth 需要是一个过去的事件
driver.height 最小不能小于100
读者可以尝试注释DriverLicense类中的@valid注解,运行结果没有违法约束。
总结
本节我们通过示例演示@valid注解实现级联验证。示例中有目的地给嵌套对象提供无效值,验证在创建父对象过程中是否对嵌套对象进行约束检查。
阅读全文
1 0
- javaBean验证框架(7)—使用@valid实现对象关联验证
- javaBean验证框架(8)—使用@valid实现集合验证
- javaBean验证框架(3)—验证消息
- javaBean验证框架(9)—分组验证
- javaBean验证框架(1)—概述
- javaBean验证框架(4)—自定义约束
- javabean实现注册验证
- JavaBean使用实例——注册验证
- JavaBean实现注册验证功能
- javaBean验证框架(5)—自定义类级别约束
- javaBean验证框架(6)—附加约束和组合约束
- 使用Struts2验证框架实现输入校验
- 使用SSH框架实现用户登录验证
- 使用Struts2验证框架实现输入校验
- 使用dwr框架实现登录用户名验证
- jsp—+JavaBean注册验证
- 产生彩色验证码_(javabean实现)
- 产生彩色验证码_(javabean实现)
- Wireshark抓取VIP视频(博客学习)
- springboot控制层生成图片验证码
- 浮点数精度控制方式总结(含mysql和java)
- c#泛型集合
- HDU 2553 N皇后问题(经典的回溯问题)
- javaBean验证框架(7)—使用@valid实现对象关联验证
- java 自定义异常
- 免费的https申请以及教程
- Python高级编程-如何读写文本文件?
- java web项目图片上传
- 转 关于二维数组初始化的一个小细节
- python复制方法
- 嵌入式学习历程【2】 Linux的基本命令
- Laravel 中间件向控制器传参