Spring Boot 列表内的Javax验证

nuypyhwy  于 2022-11-05  发布在  Spring
关注(0)|答案(1)|浏览(194)

我有一个类和一个字符串列表字段,我想验证每一个字符串,但是没有用,我试过了,但是没有用:

  1. public class Info {
  2. @NotNull
  3. @NotEmpty
  4. private List<@Email(message = "uncorrect email") String> emails;
  5. }

我也试过这个,但没有效果:

  1. public class Info {
  2. @NotNull
  3. @NotEmpty
  4. private @Valid List<@Email(message = "uncorrect email") String> emails;
  5. }

但是当它只有一个字符串时,它工作得很好。

  1. public class Info {
  2. @NotNull
  3. @NotEmpty
  4. private @Email(message = "uncorrect email") String email;
  5. }

我怎样才能实现我的愿望?

esyap4oy

esyap4oy1#

最新版本的hibvalidator支持它,你可以通过以下的修改来实现你想要的验证行为。

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. <version>2.7.0</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>javax.validation</groupId>
  9. <artifactId>validation-api</artifactId>
  10. <version>2.0.1.Final</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.hibernate</groupId>
  14. <artifactId>hibernate-validator</artifactId>
  15. <version>6.0.13.Final</version>
  16. </dependency>
  17. </dependencies>

Java Bean

  1. import java.util.List;
  2. import javax.validation.constraints.Email;
  3. import javax.validation.constraints.NotEmpty;
  4. import javax.validation.constraints.NotNull;
  5. public class Info {
  6. @NotNull
  7. @NotEmpty
  8. private List<@Email(message = "List contain atleast one incorrect email") String> emails;
  9. @NotNull
  10. @NotEmpty
  11. @Email(message = "incorrect email")
  12. private String email;
  13. public List<String> getEmails() {
  14. return emails;
  15. }
  16. public void setEmails(List<String> emails) {
  17. this.emails = emails;
  18. }
  19. public String getEmail() {
  20. return email;
  21. }
  22. public void setEmail(String email) {
  23. this.email = email;
  24. }
  25. @Override
  26. public String toString() {
  27. return "Info [emails=" + emails + ", email=" + email + "]";
  28. }
  29. }

添加@Valid

  1. @PostMapping("/post")
  2. public void post(@RequestBody @Valid Info info) {
  3. System.out.println(info);
  4. }
展开查看全部

相关问题