Wondercease

浙ICP备2022017321号

验证字段是否合法

@Valid@Validated 差不多 不分组

@Validated

1.创建分组接口

interfaceValidationStepOne{

// validation group marker interface

}

2.定义验证限制

@NotBlank(groups={ValidationStepOne.class})

privateString username;

3.controller中使用@Validated进行验证

默认的情况下,不同的分组约束验证是无序的,但是在有些情况下验证的相互约束很重要(比如前一个组验证失败,后面的将不再验证等情况),所以groups分组的验证也有前后验证顺序。使用@GroupSequence注解进行排序。

public String stepOne(@Validated(ValidationStepOne.class) Account account)

@GroupSequence({First.class,Second.class})

public interface Group{

}

注意点:

定义验证限制的地方如果group不写就是Default.class,也是一个接口。所以如果只在一个字段上指定了自定义的group(Gp.class),并且在验证参数的时候(无论用spring注解还是不用spring)只指定了Gp,没有Default,那除了Gp标注的字段,其它的都不会被验证。

可以用Gp继承Default

常用注解

@Null

限制只能为null

@NotNull

限制必须不为null

@AssertFalse

限制必须为false

@AssertTrue

限制必须为true

@DecimalMax(value)

限制必须为一个不大于指定值的数字

@DecimalMin(value)

限制必须为一个不小于指定值的数字

@Digits(integer,fraction)

限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction

@Future

限制必须是一个将来的日期

@Max(value)

限制必须为一个不大于指定值的数字

@Min(value)

限制必须为一个不小于指定值的数字

@Past

限制必须是一个过去的日期

@Pattern(value)

限制必须符合指定的正则表达式

@Size(max,min)

限制字符长度必须在min到max之间

@Past

验证注解的元素值(日期类型)比当前时间早

@NotEmpty

验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)

@NotBlank

验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格

@Email

验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

注意,不要错用了异常类型,比如在int上不可用@size

发表评论

您的电子邮箱地址不会被公开。