2017-07-26 33 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,如果有這樣一個你正在尋找的註釋,如果沒有,那麼我認爲你最好使用單獨的註釋。