2013-03-15 99 views
1

我有這樣一個bean:Bean驗證

@Data 
    public static class ClassUnderTest { 
    @NotNull 
    private String field1; 

    @NotNull 
    @Since(2.0) 
    private String field2; 

    @NotNull 
    @Until(3.0) 
    private String field3; 
    } 

@Since@Until是GSON批註允許避免序列化/在我的REST API反序列化的某些領域,某些API版本。

我對此API的輸入有效負載執行bean驗證以引發約束違規。 我希望能夠根據Gson註釋(而不是組!)提出每個版本的相同違規行爲。


有沒有一種方法,從ConstraintViolation<T>,得到Member(如Method/Field),它產生的衝突,讓我檢查,如果它是由什麼註釋?

有沒有辦法通過Bean驗證來處理驗證版本化?

我唯一的解決辦法似乎來檢索路徑(getPropertyPath)該成員,但似乎並不容易做到......

回答

0

你可以從違規通過getPropertyPath()檢索的屬性名稱。也就是說,將約束分配給與版本對應的組可能是更好的方法。請注意,驗證組還可以擴展現有組,這可能有助於模型在新版本中添加約束。