public class User {
@NotBlank
@Size(min=2)
private final String firstName;
@NotBlank
@Size(min=2)
private final String lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
我想验证属性firstName和lastName。但我不想每次都重复注释。
如何创建自定义注释,使代码如下所示
public class User {
@UserName
private final String firstName;
@UserName
private final String lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
验证也是一样的
第六章。创建自定义约束。约束合成
首先,让我说注解是为了给编译器或运行时提供额外的信息。例如,当你使用注解@over
时,它意味着告诉编译器这个方法应该覆盖超类的方法。
现在,在您的例子中,您正在寻找用于运行时的注释,因为您希望验证该字段是否为非空等等。
当然,您可以创建一个注释来检查您正在寻找的两个检查,但您还需要实现该机制,以确保这些检查得到验证(您将创建的注释接口应具有运行时的保留策略-@retention(RetentionPolicy.runtime)
)。当您使用@NotNull
时,JRE确保此字段不为NULL,但当您想要创建自定义注释@UserName
并检查该字段不为NULL且最小大小为2时,您必须确保在运行时处理此检查。
阅读本文,了解如何在Java中读取注释的值。
正如@Nico在他的评论中所建议的,如果有这样的注释,你可以搜索JSR,如果没有,那么我认为你最好使用单独的注释。
在尝试使用JSR-303(hibernate Validator)验证模型时,我在将
我有一个使用javax注释的jax-rs项目(
假设我有以下课程: 是否可以通过“MyProduct”类验证“code”属性?比如:
(仅在测试中使用)我有依赖项(没有spring或DI容器) 我可以通过 myDto在哪里 哪里 哪里 在这个验证器中,所有的工作都很完美,但没有任何注释或在现场发挥作用,他们只是被忽略了 请帮忙。断然的 很抱歉,我的真实案例是相互嵌套的DTO,所以只有高级类经过验证,但没有嵌套。 而另一个有注释的字段未经验证。当我在字段中添加时,它开始正常工作
假设我不想使用JSR303来验证我的bean。当bean被标记为有效时,是否可以实现Spring将使用的自定义验证器? 如果我的自定义验证器是Spring组件,那就太好了
我对Spring靴有疑问。如何对Spring转换器进行验证?我试图从javax使用ConstraintValidator,但它在转换器之后运行。