| — | — |
| @Min | 验证 Number 和 String 对象是否大等于指定的值 |
| @Max | 验证 Number 和 String 对象是否小等于指定的值 |
| @DecimalMax | 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度 |
| @DecimalMin | 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度 |
| @Digits | 验证 Number 和 String 的构成是否合法 |
| @Digits(integer=,fraction=) | 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。 |
| @Range(min=, max=) | 检查数字是否介于min和max之间. |
| — | — |
| @Range(min=10000,max=50000,message=“range.bean.wage”) | private BigDecimal wage; |
| @Valid | 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证) |
| — | — |
| @CreditCardNumber | 信用卡验证 |
| @Email | 验证是否是邮件地址,如果为null,不进行验证,算通过验证。 |
| @scriptAssert(lang= ,script=, alias=) | |
| @URL(protocol=,host=, port=,regexp=, flags=) | |
二、在SringMVC中使用
使用注解
1、准备校验时使用的JARvalidation-api-1.0.0.GA.jar:JDK的接口;
hibernate-validator-4.2.0.Final.jar是对上述接口的实现;
log4j、slf4j、slf4j-log4j
2、编写需要校验的bean@NotNull(message=“名字不能为空”)
private String userName;
@Max(value=120,message=“年龄最大不能查过120”)
private int age;
@Email(message=“邮箱格式错误”)
private String email;
3、校验方法@RequestMapping("/login")
public String testValid(@Valid User user, BindingResult result){
if (result.hasErrors()){
List errorList = result.getAllErrors();
for(ObjectError error : errorList){
System.out.println(error.getDefaultMessage());
}
}
return “test”;
}
备注:这里一个@Valid的参数后必须紧挨着一个BindingResult 参数,否则spring会在校验不通过时直接抛出异常
前台可以使用spring的标签库也可以自己自定义处理
4、spring标签库的用法<%@ taglib prefix=“form” uri=“http://www.springframework.org/tags/form”%>
三、自定义校验类型
1、需要验证的实体 Bean
public class LoginVo {
@NotNull
@IsMobile //自定义的注解
private String mobile;
@NotNull
@Length(min=32)
private String password;
//省略 get set 方法
}
2、自定义 IsMobile 注解类import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.
【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】 浏览器打开:qq.cn.hn/FTf 免费领取
annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@documented
@Constraint(validatedBy = {IsMobilevalidator.class })
public @interface IsMobile {



