JSR303验证
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<FieldError> fieldErrors = errors.getFieldErrors();
for(FieldError error: fieldErrors){
System.out.println(error.getDefaultMessage());
}
}
return "success";
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。