【发布时间】:2021-09-21 14:02:32
【问题描述】:
我正在使用 Spring Boot。
我正在编写一个 Java 类,我想使用注释进行验证。 像这样的:
@Getter @Setter
@Validated
public class User {
@NotBlank(message = "Username cannot be empty")
private String username;
@NotBlank(message = "Email address cannot be empty")
@Email(message = "Please provide valid email address")
private String email;
@NotBlank(message = "First Name cannot be empty")
private String firstName;
@NotBlank(message = "Last Name cannot be empty")
private String lastName;
}
如果我尝试使用错误的参数创建一个新对象,我想引发一个异常。 如果我尝试使用带有错误参数的设置器,结果相同。
有可能吗?我的代码错了吗?
【问题讨论】:
-
如果您尝试使用 javax.validation,这是不可能的,如果 @Validated 和验证注释可能来自其他来源,请提供更多信息
-
我正在使用 javax.validation,所以我知道这是不可能的。关于它的最佳做法是什么?它是关于字段验证的“手动”实现吗?
-
AFAIK,弹簧验证适用于 REST 请求和开箱即用的 JPA 实体验证。
-
我没有将此类用于 Rest/JPA 实体
-
@Safari 通常,如果您想在调用 setter 和实例化对象时验证任何内容,您将使用不依赖 cdi 的系统在 setter 上手动编写验证。然后在构造函数中使用相同的验证,如果任何参数无效,则返回 IllegalArgumentException
标签: java spring-boot validation