本文主要是介绍JSR 303 基本的校验规则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
JSR 303 基本的校验规则
Bean Validation 中的 constraint
1. Bean Validation 中内置的 constraint
Constraint | 详细信息 |
---|---|
@Null | 被注释的元素必须为 null |
@NotNull | 被注释的元素必须不为 null |
@AssertTrue | 被注释的元素必须为 true |
@AssertFalse | 被注释的元素必须为 false |
@Min(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@Max(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@DecimalMin(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@DecimalMax(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@Size(max, min) | 被注释的元素的大小必须在指定的范围内 |
@Digits (integer, fraction) | 被注释的元素必须是一个数字,其值必须在可接受的范围内 |
@Past | 被注释的元素必须是一个过去的日期 |
@Future | 被注释的元素必须是一个将来的日期 |
@Pattern(value) | 被注释的元素必须符合指定的正则表达式 |
2. Hibernate Validator 附加的 constraint
Constraint | 详细信息 |
---|---|
被注释的元素必须是电子邮箱地址 | |
@Length | 被注释的字符串的大小必须在指定的范围内 |
@NotEmpty | 被注释的字符串的必须非空 |
@Range | 被注释的元素必须在合适的范围内 |
一个 constraint 通常由 annotation 和相应的 constraint validator 组成,它们是一对多的关系。也就是说可以有多个 constraint validator 对应一个 annotation。在运行时,Bean Validation 框架本身会根据被注释元素的类型来选择合适的 constraint validator 对数据进行验证。
有些时候,在用户的应用中需要一些更复杂的 constraint。Bean Validation 提供扩展 constraint 的机制。可以通过两种方法去实现,一种是组合现有的 constraint 来生成一个更复杂的 constraint,另外一种是开发一个全新的 constraint。
简单示例
Order
package com.bytebeats.codelab.bean.validation.model;import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;public class Order {@NotNull(message = "orderId必须不为null")@Size(min = 10, max = 10)private String orderId;@NotEmpty(message = "customer须不为空")private String customer;@Email(message = "email必须是一个电子信箱地址")private String email;@NotEmpty(message = "address必须不为空")private String address;@NotNull(message = "status必须不为 null")private String status;@NotNull(message = "createDate必须不为 null")private Date createDate;//getter and setter
}
测试类:
//调用JSR303验证工具,校验参数Validator validator = Validation.buildDefaultValidatorFactory().getValidator();Order order = new Order();order.setOrderId("12345");order.setCustomer("ricky");order.setEmail("ricky");order.setAddress("北京市朝阳区");order.setStatus("DELV");order.setCreateDate(new Date());Set<ConstraintViolation<Order>> violations = validator.validate(order);for(ConstraintViolation<Order> violation: violations) {System.out.println(violation.getPropertyPath()+"\t"+ violation.getMessage());}
运行结果输出:
orderId 个数必须在10和10之间
email email必须是一个电子信箱地址
这篇关于JSR 303 基本的校验规则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!