我在Jersey中的REST资源端点验证我的POJO:
public class Resource {
@POST
public Response post(@NotNull @Valid final POJO pojo) {
...
}
}
public class POJO {
@NotNull
protected final String name;
@NotNull
@Valid
protected final POJOInner inner;
...
}
public class POJOInner {
@Min(0)
protected final int limit;
...
}
这似乎工作正常。
但是,仅当字段@Min(0)
具有inner
注释时才会验证@Valid
注释。将@Valid
注释添加到不是原始字段的每个字段感觉不对。
有没有办法告诉bean验证器自动递归继续验证,即使没有@Valid
注释?我希望我的POJO
如下:
public class POJO {
@NotNull
protected final String name;
@NotNull
protected final POJOInner inner;
...
}
答案 0 :(得分:20)
实际上,根据规范,添加@Valid正是这个用例。来自JSR 303规范:
除支持实例验证外,还支持验证对象图。图验证的结果作为一组统一的约束违规返回。 考虑bean X包含Y类型字段的情况。通过使用@Valid注释注释字段Y,Validator将在验证X时验证Y(及其属性)。
...
@Valid注释以递归方式应用