2017-07-26 31 views
0
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的。 但我不想每次重复注释。如何组的javax验证注解

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

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

和验证将是相同的

+1

当然没问题。尝试搜索* JSR 303自定义bean验证*的一些例子。 –

+1

在“约束组合”中搜索[bean验证规范](http://download.oracle.com/otndocs/jcp/bean_validation-1_1-fr-eval-spec/)。 – VGR

+0

谢谢你们:) – Romper

回答

0

首先让我说,注释是为了给更多的信息来启动编译器或运行时。例如,当你使用注释@override时,它的意思是告诉编译器这个方法应该重载超类的方法。

现在,在你的情况你正在寻找注释这是指运行时,因为要验证字段不为空等

当然,你可以创建一个注释这将同时检查你的支票寻找,但您还需要实施该机制以确保这些机制得到验证(您将创建的注释界面应具有运行时保留策略 - @Retention(RetentionPolicy.RUNTIME))。当您使用@NotNull时,JRE确保该字段不为NULL,但是当您想要创建自定义注释@UserName并检查该字段不是NULL并且最小大小为2时,那么在运行时您必须确保处理此检查。

阅读this关于如何阅读Java中的注释值。

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