javaBean vlidation(2)—内置约束

来源:互联网 发布:手机虚拟歌姬软件 编辑:程序博客网 时间:2024/06/06 06:57

javaBean vlidation(2)—内置约束

本文介绍规范内置的约束,并说明可选属性元素。

预定约束说明

javaBean验证规范内置了下面约束注解:

  • AssertFalse,AssertTrue
    元素属性:无
    目标变量类型:boolean, java.lang.Boolean
    期望目标变量值:false,true

  • DecimalMin,DecimalMax
    元素属性:(value=int, inclusive=boolean)
    目标变量类型:BigDecimal, BigInteger, CharSequence, primitive numbers (byte, short, int, long) and their respective wrappers
    期望目标变量值:variableValue >= value,variableValue <= value ; 注:如果inclusive=false,则不包括等号,缺省为ture.

  • Digits
    元素属性:(integer=int, fraction=int)
    目标变量类型:同上
    期望目标变量值:variableIntegralDigits <= integer 并且 variableFractionalDigits <= fraction

  • Min,Max
    元素属性: (value=int)
    目标变量类型:同上,除了CharSequence
    期望目标变量值:variableValue >= value,variableValue <= value

  • Size
    元素属性: (max=int, min=int)
    目标变量类型:CharSequence, Collection, Map, Array
    期望目标变量值:variableValueRelatedSize >= min 并且 variableValueRelatedSize <= max

  • Pattern
    元素属性:(regexp=String, flags=Pattern.Flag[])
    目标变量类型: CharSequence (String)
    期望目标变量值:Pattern.matches(regexp, variableValue) == true

  • Past,Future
    元素属性:无
    目标变量类型: java.util.Date, java.util.Calendar
    期望目标变量值:currentMillis of variableValue < time now in millis,currentMillis of variableValue > time now in millis

  • Null,NotNull
    元素属性:无
    目标变量类型:Any subclass of java.lang.Object
    期望目标变量值:variableValue == null,variableValue != null

上面约束定义在javax.validation.constraints包中。


可选属性说明

上面约束中标注为“无”属性,还有一些可选属性,下面给予详细说明:

  • message = String

    验证错误信息,缺省通过key读取资源文件,实现国际化。也可以直接使用硬代码覆盖缺省信息,或自定义资源文件,通过KEY覆盖。
    资源key需用在{}中。缺省的key是注解类的完整名称加上.message,如:javax.validation.constraints.Future.message。当我们自定义约束注解时,应该遵循相同的约定。

  • groups = Class

约束列表

上面每个预定义的注解,有一个内置注解List.我们看看NotNull的代码:

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })@Retention(RUNTIME)@Documented@Constraint(validatedBy = { }) public @interface NotNull {    String message() default "{javax.validation.constraints.NotNull.message}";    Class<?>[] groups() default { };    Class<? extends Payload>[] payload() default { };    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })    @Retention(RUNTIME)    @Documented    @interface List {       NotNull[] value();    }}

这个注解允许指定多个相同的注解,如不同组及错误信息。

总结

本文简要说明预定义约束注解,以及可选项的属性介绍,为后面我们自定义约束做写概念说明。

原创粉丝点击