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";
        }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。