我正在查看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来验证此集合必须使用自定义验证器?
答案 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>