使用XML进行Bean验证:字段上的多个相同约束

时间:2017-12-20 22:30:13

标签: java xml validation

在Java 8中引入@Repeatable之前,不允许在字段上使用多个相同的注释。对于XML Bean Validation,解决方法是在Constraint注释中创建嵌套的@List注释。例如,如this post中所述,嵌套在javax.validation.constraints.NotNull内,您有:

@interface List {

  NotNull[] value();
}

在java代码中直接使用注释时(通常如此),您可以定义多个@NotNull注释:

@NotNull.List({@NotNull(groups=Foo.class, message="myObject may not be null for Foo"), 
               @NotNull(groups=Bar.class, message="myObject may not be null for Bar"})
private Object myObject;

但是,我试图在xml文件中而不是在我的代码中配置验证(这种情况不太常见)。

我的xml bean验证如下所示:

<field name="myObject">
  <constraint annotation="javax.validation.constraints.NotNull">
    <message>myObject may not be null for Foo</message>
    <groups>
      <value>my.package.Foo</value>
    </groups>
  </constraint>
  <constraint annotation="javax.validation.constraints.NotNull">
    <message>myObject may not be null for Bar</message>
    <groups>
      <value>my.package.Bar</value>
    </groups>
  </constraint>
</field>

这对我不起作用......当我这样做时,验证根本不会发生。

我在xsd:http://jboss.org/xml/ns/javax/validation/mapping/validation-mapping-1.0.xsd中寻找线索,但我没有找到合并@NotNull.List的方法。

在xml中使用多个相同约束的正确方法是什么?

0 个答案:

没有答案