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>

そのため、タグをXMLの<valid>タグと交換します。<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 を使用してこのコレクションをカスタムバリデーターで検証する方法を知っている人はいますか?

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 に答える