2014年(20)
分类: 云计算
2014-02-20 11:17:21
更多学习资料,请登录网站下载:
JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,官方参考实现是Hibernate Validator。
此实现与Hibernate ORM 没有任何关系。JSR 303 用于对Java Bean 中的字段的值进行验证。
Spring MVC 3.x之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证。
JSR 303内置的约束规则:
@AssertTrue / @AssertFalse
?验证适用字段:boolean
?注解说明:验证值是否为true / false
?属性说明:-
@DecimalMax / @DecimalMin
?验证适用字段:BigDecimal,BigInteger,String,byte,short,int,long
?注解说明:验证值是否小于或者等于指定的小数值,要注意小数存在精度问题
?属性说明:公共
@Digits
?验证适用字段:BigDecimal,BigInteger,String,byte,short,int,long
?注解说明:验证值的数字构成是否合法
?属性说明:integer:指定整数部分的数字的位数。fraction: 指定小数部分的数字的位数。
@Future / @Past
?验证适用字段:Date,Calendar
?注解说明:验证值是否在当前时间之后 / 之前
?属性说明:公共
@Max / @Min
?验证适用字段:BigDecimal,BigInteger,String,byte,short,int,long
?注解说明:验证值是否小于或者等于指定的整数值
?属性说明:公共
@NotNull / @Null
?验证适用字段:引用数据类型
?注解说明:验证值是否为非空 / 空
?属性说明:公共
@Pattern
?验证适用字段:String
?注解说明:验证值是否配备正则表达式
?属性说明:regexp:正则表达式flags: 指定Pattern.Flag的数组,表示正则表达式的相关选项。
@Size
?验证适用字段:String,Collection,Map,数组
?注解说明:验证值是否满足长度要求
?属性说明:max:指定最大长度,min:指定最小长度。
@Valid
?验证适用字段:引用类型
?注解说明:验证值是否需要递归验证
?属性说明:无
使用Spring MVC 和 JSR-303的标注做表单提交的服务器端验证时,需校验的表单/命令对象和其绑定结果对象或错误对象时成对出现的,它们之间不允许声明其他的入参: @Valid 标注的Command对象和BindingResult参数一定要紧挨着。要不然 数据绑定错误直接抛异常,不会封装成一个BindingResult对象。
Errors 接口提供了获取错误信息的方法,如getErrorCount() 或getFieldErrors(String field)
BindingResult扩展了 Errors 接口
@RequestMapping("/testJSR303")
public String testJSR303(@Valid User user5,Errors errors){
//打印错误消息的数量
System.out.println(errors.getErrorCount());
//遍历错误消息
if(errors.getErrorCount() > 0){
List
for(FieldError error: fieldErrors){
System.out.println(error.getDefaultMessage());
}
}
return"success";
}