如何验证XML中带注释的对象的集合

时间:2012-05-21 16:51:05

标签: java hibernate-validator

我正在查看this post of using JSR-303 to validate a collection of objects。该解决方案适用于注释,但我似乎无法使用Hibernate Validator XML格式的配置。

例如,我的代码类似于:

public class DataSet
{
    Collection<Data> dataCollection;
    public Collection<Data> getDataCollection() {...}
}

从那里,我有一个自定义验证器/注释DataValidator / @ValidData

在XML中,我首先这样做:

<bean class="DataSet"
    ignore-annotations="true">
    <field name="dataCollection">
        <valid/>
        <constraint annotation="ValidData"/>
    </field>
</bean>

但是,我得到以下例外:

Exception in thread "main" javax.validation.UnexpectedTypeException: No validator could be found for type: java.util.Collection<DataSet>

所以我将<valid>标记与XML中的<constraint>标记交换。它似乎对XSD架构无效,并且无法再解析XML。

<bean class="DataSet"
    ignore-annotations="true">
    <field name="dataCollection">
        <constraint annotation="ValidData"/>
        <valid/>
    </field>
</bean>

Exception in thread "main" javax.validation.ValidationException: Error parsing mapping file.

有没有人知道如何使用XML来验证此集合必须使用自定义验证器?

1 个答案:

答案 0 :(得分:1)

关键是在XML中向数据POJO本身添加类级别约束注释。

<bean class="DataSet"
    ignore-annotations="true">
    <field name="dataCollection">
        <valid/>
    </field>
</bean>

<bean class="Data" ignore-annotations="true">
     <class>
          <constraint annotation="ValidData"/>
     </class>
</bean>