Spring Boot 2.0 hibernate validate List 验证
编程教程
>
Java
>
Spring
(9848)
2024-11-26 14:39:04
Spring Boot 2.0 hibernate validate List 验证问题解决
在对象中,可能你有一个简单的List<String>集合需要正则验证(例如List<String> emails)。
但是直接在集合的字段上标注
@Pattern("\b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}\b.")
List<String> emails
上面这种写法就会报错:
HV000030: No validator could be found for constraint 'javax.validation.constraints.Pattern' validating type 'java.util.List<java.lang.String>'. Check configuration for 'parameter.types'"
那么如何验证类似这种简单集合呢?
解决办法有两种:
方法 一: 新建一个对象存储String字段,例如
public EmailVO{
@Pattern("\b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}\b.")
String email;
//get/set
}
然后再
List<EmailVO> emails
方法二:
前置条件:
Bean验证2.0(Hibernate Validator 6.0.1及更高版本)支持通过注释参数化类型的类型参数来验证容器元素。
参考:
List<@NotNull @Pattern(regexp="\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}\\b") String> emails;
两个方法都能解决集合的验证问题。可根据自身环境选择。当然还有其他方法。例如自己实现一个验证注解,或者依赖三方工具包
三方包参考:
https://github.com/jirutka/validator-collection
http://blog.xqlee.com/article/475.html