1

我正在查看这篇关于使用 JSR-303 验证对象集合的帖子。该解决方案适用于注释,但我似乎无法让它与 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>标签与<constraint>XML 中的标签交换。这似乎对 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 通过必须自定义验证器来验证这个集合?

4

1 回答 1

1

关键是将 XML 中的类级约束注释添加到 Data 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>
于 2012-05-22T14:47:38.353 回答