2013-03-15 103 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()检索的属性名称。也就是说,将约束分配给与版本对应的组可能是更好的方法。请注意,验证组还可以扩展现有组,这可能有助于模型在新版本中添加约束。