我有一个这样的 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 Validation 来处理验证版本控制?
我唯一的解决方案似乎是从路径 ( getPropertyPath
) 中检索该成员,但这似乎并不容易...
最佳答案
您可以通过 getPropertyPath()
从违规中检索属性名称。也就是说,将您的约束分配给与版本对应的组可能是更好的方法。请注意,验证组也可以扩展现有组,这可能有助于对新版本中添加的模型约束进行建模。
关于java - REST API 输入的 Bean 验证和 API 版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15430192/