JSR303是Java为Bean数据合法性校验所提供的标准框架。需要对属性标注一些注解如:@NotNull、@Max(value)、@Min(value)等。
地址:https://jcp.org/en/jsr/detail?id=303 选择适合自己的版本下载。
注意:虽然SpringMVC支持JSR303标准的校验框架,Spring的DataBinder进行数据绑定时,同时也会调用相应的方法来对数据进行校验,但是Spring没有提供对JSR303的支持。
hibernate-validator-4.3.2.Final-dist.zip 下载地址:http://hibernate.org/validator需要在项目中加入三个jar文件。
分别是
hibernate-validator-4.3.2.Final.jar
jboss-logging-3.1.0.CR2.ajr
validation-api-1.0.0.GA.jar
步骤:
1.在需要验证数据的Bean中,对属性添加相应的校验注解。
2.在Controller的处理方法中需要对需验证数据Bean 添加@valid注解。
另外,带注解@valid注解的参数后,要紧跟一个BindingResult或者是Error的类型的入参,否则Spring会在检验不通过时直接抛出异常。
public class User{
@NotEmpty(message="用户姓名不能为空")
public String name;
@NotEmpty(message="用户电话号码不能为空")
public String phone;
@Min(10)
public int age;
//省略setter and getter method
}
//UserController
@RequestMapping(value="...",method=RequestMethod.POST)
public string addSave(@Valid User,BindingResult bindingResult,HttpSeesion session){
//业务处理略.....
}
约束 | 说明 |
@Null | 被注释的元素必须为null |
@NotNull | 被注释的元素必须不为null |
@AssertTure | 被注释的元素必须为ture |
@AssertFalse | 被注释的元素必须为false |
@Min(value) | 被注释的元素必须是一个数字,并且值需要大于或等于value |
@Max(value) | 被注释的元素必须是一个数字,并且值需要小于或等于value |
@DecimalMin(value) | 被注释的元素必须是一个数字,并且值需要大于或等于value |
@DecimalMax(value) | 被注释的元素必须是一个数字,并且值需要小于或等于value |
@Size(max,min) | 被注释的元素需要在min到max的范围内 |
@Digits(integer,fraction) | 被注释的元素必须是一个数字,值必须在可接受范围 |
@Past | 被注释的元素要求是过去的日期 |
@Future | 被注释的元素要求是将来的日期 |
@Pattern(value) | 被注释的元素必须符合指定的正则表达式 |