2012-05-21 2 views
1

Я искал this post of using JSR-303 to validate a collection of objects. Решение отлично работает с аннотациями, но я не могу заставить его работать с конфигурацией формата XML 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 для проверки этой коллекции с помощью обязательного валидатора?

+0

Исходя из первого исключения, я бы сказал, что для '@ ValidData' для типа' Collection' не существует валидатора ограничений. Какие валидаторы у вас есть для этого ограничения? – Gunnar

+0

Например, sake, @ValidData можно считать аннотацией пользовательского ограничения. DataValidator - это специальный валидатор, связанный посредством аннотации. – plusjeff

ответ

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> 
Смежные вопросы