
Bean Validation 规范提供了一种强大的机制,用于验证 Java Bean 的属性。当需要验证集合(例如 List)中的元素时,可以使用容器元素约束。本文将详细介绍如何使用 @Pattern 注解结合容器元素约束,对字符串列表中的邮箱地址进行校验,确保它们都以 @gmail.com 结尾。
容器元素约束允许您对集合中的每个元素应用约束。这对于验证集合中的数据非常有用,例如验证邮箱地址列表、电话号码列表等。在 Bean Validation 2.0 及更高版本中,可以通过在泛型类型参数前添加约束注解来实现容器元素约束。
假设我们有一个 List<String>,其中包含邮箱地址,我们希望确保所有邮箱地址都以 @gmail.com 结尾。可以使用以下代码实现:
import javax.validation.constraints.Pattern;
import java.util.List;
public class EmailList {
private List<@Pattern(regexp = "^(.+)@(gmail\.com)$") String> emails;
public List<String> getEmails() {
return emails;
}
public void setEmails(List<String> emails) {
this.emails = emails;
}
}代码解释:
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import javax.validation.ConstraintViolation;
public class Main {
public static void main(String[] args) {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
EmailList emailList = new EmailList();
List<String> emails = Arrays.asList("valid.email@gmail.com", "invalid.email@example.com");
emailList.setEmails(emails);
Set<ConstraintViolation<EmailList>> violations = validator.validate(emailList);
if (!violations.isEmpty()) {
for (ConstraintViolation<EmailList> violation : violations) {
System.err.println(violation.getPropertyPath() + " : " + violation.getMessage());
}
} else {
System.out.println("Validation successful!");
}
}
}运行结果:
emails[1] : must match "^(.+)@(gmail.com)$"
代码解释:
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.0.Final</version> <!-- 请使用最新版本 -->
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>jakarta.el</artifactId>
<version>4.0.2</version> <!-- 请使用最新版本 -->
</dependency>通过结合 @Pattern 注解和容器元素约束,可以方便地对集合中的元素进行模式验证,从而确保数据的有效性和一致性。 本文提供了一个验证邮箱域名列表的示例,您可以根据实际需求修改正则表达式,以适应不同的验证场景。 掌握容器元素约束的使用,可以提高数据校验的灵活性和可维护性。
以上就是使用 Bean Validation 约束列表中的字符串:限定邮箱域名的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号