【问题标题】:How to group javax validation annotations如何对 javax 验证注解进行分组
【发布时间】:2017-07-26 11:31:14
【问题描述】:
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;
    }
}

我想验证属性 firstNamelastName。 但我不想每次都重复注释。

如何创建自定义注释,所以代码会像

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;
    }
}

和验证将是相同的

【问题讨论】:

  • 当然,没问题。尝试搜索 JSR 303 自定义 bean 验证 以获取一些示例。
  • bean validation specification 中搜索“约束组合”。

标签: java validation constraints bean-validation


【解决方案1】:

首先让我说注解是为了给编译器或运行时提供额外的信息。例如,当你使用注解@override时,它的意思是告诉编译器这个方法应该覆盖超类的方法。

现在,在您的情况下,您正在寻找适用于运行时的注释,因为您想验证该字段不为空等。

当然,您可以创建一个注释来检查您正在寻找的检查,但您还需要实现机制以确保这些检查得到验证(您将创建的注释接口应该具有运行时的保留策略 - @987654323 @)。当您使用@NotNull 时,JRE 确保此字段不为 NULL,但是当您要创建自定义注释 @UserName 并检查该字段不为 NULL 且最小大小为 2 时,您必须确保在运行时进行此检查处理。

阅读this,了解如何在 Java 中读取注解的值。

正如@Nico 在他的评论中所建议的,如果有你正在寻找的这样的注释,你可以搜索 JSR,如果没有,那么我认为你最好使用单独的注释。

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2021-10-06
    • 2015-10-02
    • 2014-12-08
    • 1970-01-01
    相关资源
    最近更新 更多