Validation实现字段校验
JSR-303,正式名称为Bean Validation,是Java ee 6中的一项子规范,专注于JavaBean的验证。它提供了一套元数据模型和API,允许你通过注解的方式对JavaBean的字段进行约束验证,以确保数据的正确性。这些注解可以直接添加到Java类的属性上,也可以添加到方法、构造函数、参数或类上
空检查
@Null:校验对象是否为null1
2@Null(message = "账号不能为空")
private String account;@NotNull:校验对象是否不为null,无法检查长度为0的字符串1
2@NotNull(message = "姓名必须提供")
private String name;@NotBlank:校验字符串是不是Null还有被trim的长度是否大于0,只对字符串,还会去掉前后空格1
2@NotBlank(message = "用户名不能为空,且不能只有空格")
private String username;@NotEmpty:校验元素是否为Null或者Empty1
2@NotEmpty(message = "邮箱地址必须提供")
private String email;
Boolean检查
@AssertTrue:被注释的元素必须为true1
2@AssertTrue(message = "必须接受服务条款")
private boolean acceptTerms;@AssertFalse:被注释的元素必须为false1
2@AssertFalse(message = "必须拒绝此选项")
private boolean declineOption;
长度检查
@Size(min= ,max=):被注释的元素的大小必须在指定的范围内,适用于String、Collection、Map和数组1
2@Size(min = 6, max = 20, message = "密码长度必须在6到20个字符之间")
private String password;@Length(min= ,max=):指定字符串的长度区间1
2@Length(min = 3, max = 50, message = "评论长度必须在3到50个字符之间")
private String comment;
日期检查
@Past:校验Data和Calendar对象是否在当前时间之前,表明这个时间字段要是已经过去的时间1
2@Past(message = "生日必须是过去的日期")
private Date birthDate;@Future:校验Data和Calendar对象是否在当前时间之后,表明这个时间字段要是未来时间1
2@Future(message = "预定日期必须是未来的日期")
private Date reservationDate;@Pattern:校验String对象是否符合预期的正则表达式规则,表明这个字段要符合一定的正则表达式规则,regexp属性定义了电子邮件的正则表达式,而message属性定义了当校验失败时返回的错误消息1
2@Pattern(regexp = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$", message = "电子邮件地址格式不正确")
private String email;
数值检查
@Min:被校验的数字要大于这个值1
2@Min(value = 18, message = "年龄必须至少为18岁")
private int age;@Max:被校验的数字要小于这个值1
2@Max(value = 100, message = "年龄不能超过100岁")
private int maxAge;@DecimalMax:被校验的数字要小于这个值1
2@DecimalMax(value = "100.00", message = "价格不能超过100.00")
private BigDecimal price;@DecimalMin:被校验的数字要大于这个值1
2@DecimalMin(value = "0.01", message = "价格不能低于0.01")
private BigDecimal minPrice;@Digits:用于验证数值类型的字段是否符合指定的整数位数和小数位数1
2@Digits(integer = 3, fraction = 2, message = "金额必须是整数3位和小数2位")
private BigDecimal amount;@Range(min=, max=):被校验的字段要在合适的范围之内1
2@Range(min = 1, max = 10, message = "评分必须在1到10之间")
private int rating;
其它正则校验
@CreditCardNumber:用来校验信用卡1
2@CreditCardNumber(message = "信用卡号码格式不正确")
private String creditCardNumber;@Email:校验是否是邮箱地址,如果值为Null也校验通过1
2@Email(message = "电子邮箱格式不正确")
private String email;