hibernate注解验证:
J2EE中的注解验证
@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(regex=,flag=) 被注释的元素必须符合指定的正则表达式
Hibernate Validator 加入的验证
@NotBlank(message =) 验证字符串非null,且长度必须大于0
@Email 被注释的元素必须是电子邮箱地址
@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range(min=,max=,message=) 被注释的元素必须在合适的范围内
以上注解验证如果验证失败怎么那个验证错误呢?
***拿到验证的信息的验证器
public Validator getValidator() {
Configuration<?> config = Validation.byDefaultProvider().configure();
return config.buildValidatorFactory().getValidator();
}
*****验证model,VatUse 要验证的model
Set<ConstraintViolation<VatUse>> violations = getValidator()
.validate(vatUse);
如果violation集合不为空那么它就有验证不通过的,
// 如果验证返回结果 大于零,说明有未通过验证项
if (violations.size() > 0 || violations==null) {
// 设置返回结果状态为:失败
ajaxDoneResult.setStatusCode(AjaxDoneResult.StatusCodeEnum.FAILURE);
StringBuffer stringBuffer = new StringBuffer();
// 迭代生成错误信息
for (ConstraintViolation<VatUse> constraintViolation : violations) {
stringBuffer.append(constraintViolation.getMessage());
stringBuffer.append("<br />");
}
return <span style="font-family: Arial, Helvetica, sans-serif;">stringBuffer.toString() </span><span style="font-family: Arial, Helvetica, sans-serif;">;</span>
}
还有一种验证方式:就是在@Size(max=, min= ,message=,group=XXX.class)组验证的方式
验证的时候指定是组验证,拿到验证信息的时候就是:
问号就是组验证的类
Set<ConstraintViolation<?>> violations = getValidator()
.validate(vatUse);
springmvc对model验证的时候,用的是hibernate的验证方式...