2014-12-02 25 views
1

支持的Javax驗證列表是hereJavax和Hibernate驗證是否意味着NotNull?

支持的Hibernate驗證列表(擴展Javax)爲here

這些註釋中的每一個都是「延伸」還是暗示@NotNull

舉例來說,如果我註釋以下實體:

​​

是否@Email@URL也執行@NotNull?或者他們只是簡單地應用/強制如果這些屬性是爲特定的Widget實例定義的?

哪些註釋擴展/暗示@NotNull,哪些不是?這些註釋是否還有其他隱含的關係?

回答

3

號如果從Hibernate驗證例如看看EmailValidatorsource code,它包含在isValid()方法的開頭這樣代碼:

if (value == null || value.length() == 0) { 
    return true; 
} 

同爲URLValidator等。通常,當您嘗試驗證null值時,相應註釋的所有驗證器都認爲該值有效,所以一個好的經驗法則是始終單獨執行非空驗證。

編輯:這裏是JSR-303 specification報價與此相關的問題:

雖然不是強制性的,它被認爲是一個很好的做法,從NOT NULL約束驗證 (拆分 核心約束驗證例如,@Email約束將在空對象上返回true,即 即不會處理@NotNull驗證)