Spring注解校验中遇到的比较低级错误
-
错误代码
@NotNull(message = "最低取样数不能为空") @Pattern(regexp = "^[3-9][0-9]{2}|[1-9][0-9]{3}[0-9]*?$") private Integer minSampleSum;
-
运行异常
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.Pattern' validating type 'java.lang.Integer'. Check configuration for 'minSampleSum' at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getExceptionForNullValidator(ConstraintTree.java:116) at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:162) at org.hibernate.validator.internal.engine.constraintvalidation.SimpleConstraintTree.validateConstraints(SimpleConstraintTree.java:54) at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:75) at org.hibernate.validator.internal.metadata.core.MetaConstraint.doValidateConstraint(MetaConstraint.java:130) at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:123)
-
异常原因
在Spring中如果使用了@NotNull就不能使用@Pattern,两者不能共存。
如果想使用@Pattern可以把属性定义为基本数据类型,@NotNull更换成@NotBlank使用。