当前位置: 首页 > 面试题库 >

JSR 303:如何验证带注释的对象的集合?

袁奇文
2023-03-14
问题内容

是否有可能在JSR 303-Jave Bean Validation中验证对象的集合,而该集合本身没有任何注释,但包含在其中的元素呢?

例如,由于第二个人的名字为空,这是否可能导致约束冲突:

List<Person> people = new ArrayList<Person>();
people.add(new Person("dave"));
people.add(new Person(null));

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<List<Person>>> validation = validator.validate(people);

问题答案:

是的,只需添加@Valid到集合中即可。

这是《
Hibernate验证程序参考》中的示例。

public class Car {
  @NotNull
  @Valid
  private List<Person> passengers = new ArrayList<Person>();
}

这是标准的JSR-303行为。参见规范的 3.1.3节。



 类似资料:
  • java验证的传统方式是定义一个具有属性的类,并用一个或多个验证约束注释进行注释,例如或。 是否可以使用验证器约束注释直接验证对象,而无需指定类。例如:

  • 假设我有以下课程: 是否可以通过“MyProduct”类验证“code”属性?比如:

  • 我的设想是: 我有一个带有JSR303验证的pojo类,如下所示: 我的要求是,我想知道哪个特定字段没有通过验证,我想把消息写在“消息”属性中。 目前,我能够跟踪字段名称,但不能跟踪“消息”属性中存在的消息。 我使用以下方法。 我还希望将消息写在注释的属性“消息”中。我怎样才能得到它?有可能这样做吗?

  • 我有一门课,比如下面的测试 有一个C1班 我给这门课打电话如下 当我调试时,我将i1设置为null。 请告知我做错了什么 注意:。我必须在xyx()中使用类Test,因为它是伪代码,并且xyx()中有很多代码

  • 问题内容: 我正在观看 Burt Beckwith* 制作的精彩视频 * http://www.infoq.com/presentations/GORM- Performance 他说: “在传统的Hibernate中,您可以将该系列映射为Bag, 这只是一个常规集合,没有顺序或唯一性保证” 我如何映射该集合,而没有带注释的顺序或唯一性?谢谢。 问题答案: 如果使用a 作为引用类型,但未指定索引号

  • 我们正在开发REST服务,并希望使用JSR303进行输入数据验证,但这里的问题是所有模型对象都是从groovy DSL生成的,并将作为jars导入。因此,在对象字段之上编写JSR-303注释没有灵活性。 那么,有没有其他方法可以不用注释使用JSR-303,可以通过XML配置吗?或者在这种情况下,请提供任何验证建议。 谢啦