如何避免在休眠验证器期间在每个 inner-class 字段上添加 @Valid?
How to avoid adding @Valid on each and every inner-class fields during the hibernate-validator?
我目前正在开发一个应用程序,我正在内部 class 添加一些验证,例如 @NotNull, @Min, @Max, etc.
为了使验证工作,我需要在每个使用内部 class 的字段上添加 @Valid
。有没有一种方法可以避免在每个对象上添加 @Valid
而是在 Class 上添加一些注释,这样它就可以适用于 class 中的所有字段?
我目前正在使用以下库来实现验证:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-validator</artifactId>
</dependency>
我试图在 class 上添加 @Validated
但似乎此注释在此 Maven 依赖项中不可用。有人可以让我知道我需要更改什么吗?
以下是一个有效的简单示例,但我想删除必须在每个字段上添加的 @Valid
。如果我不添加 @Valid
那么那些内部 classes 将不会被验证。
public class Book {
@NotNull(message="Book ID cannot be NULL")
private int bookId;
@Valid
private List<Author> author;
@Valid
private List<Publication> author;
}
public class Author {
@NotNull(message="Author ID cannot be NULL")
private int authorID;
@NotNull(message="Author Name cannot be NULL")
private String name;
}
public class Publication {
@NotNull(message="Publication ID cannot be NULL")
private int authorID;
@NotNull(message="Publication Name cannot be NULL")
private String name;
}
没有办法做你想做的事,除非你编写自己的 Quarkus 扩展,它会在构建时添加注释。
不过,这将是一些相当复杂的工作,因为您需要添加一些字节码转换以在需要的位置添加注释。
此外,您应该在 List
中添加 @Valid
注释,例如List<@Valid Publication>
而不是在字段级别。这样更优化。
我目前正在开发一个应用程序,我正在内部 class 添加一些验证,例如 @NotNull, @Min, @Max, etc.
为了使验证工作,我需要在每个使用内部 class 的字段上添加 @Valid
。有没有一种方法可以避免在每个对象上添加 @Valid
而是在 Class 上添加一些注释,这样它就可以适用于 class 中的所有字段?
我目前正在使用以下库来实现验证:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-validator</artifactId>
</dependency>
我试图在 class 上添加 @Validated
但似乎此注释在此 Maven 依赖项中不可用。有人可以让我知道我需要更改什么吗?
以下是一个有效的简单示例,但我想删除必须在每个字段上添加的 @Valid
。如果我不添加 @Valid
那么那些内部 classes 将不会被验证。
public class Book {
@NotNull(message="Book ID cannot be NULL")
private int bookId;
@Valid
private List<Author> author;
@Valid
private List<Publication> author;
}
public class Author {
@NotNull(message="Author ID cannot be NULL")
private int authorID;
@NotNull(message="Author Name cannot be NULL")
private String name;
}
public class Publication {
@NotNull(message="Publication ID cannot be NULL")
private int authorID;
@NotNull(message="Publication Name cannot be NULL")
private String name;
}
没有办法做你想做的事,除非你编写自己的 Quarkus 扩展,它会在构建时添加注释。
不过,这将是一些相当复杂的工作,因为您需要添加一些字节码转换以在需要的位置添加注释。
此外,您应该在 List
中添加 @Valid
注释,例如List<@Valid Publication>
而不是在字段级别。这样更优化。