有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我在看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) 个答案

  1. # 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>