2017-10-24 18 views
0

私はが必要です XMLを使用してbean検証を使用する必要があります。Bean検証XML全体のBean

クラス宣言の直前に注釈を入れることで、クラス全体を検証できます。

@AtLeastOneNotNull 
public class SampleBean { 
    // ... 
} 

そして、反射を使用してフィールドをループします。


XML Bean検証を使用して同じことを達成するにはどうすればよいですか?

<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd" xmlns="http://jboss.org/xml/ns/javax/validation/mapping"> 

    <default-package>my.package</default-package> 
    <bean class="SampleBean"> 
     <!-- ? --> 
    </bean> 
</constraint-mappings> 

私は<bean>後に宣言することができるすべてが<field>です。

私の目標は、XML Bean検証を使用して複数のフィールドの依存関係を検証することです。たとえば
:あなたはまだ使用している場合

field1nullであれば少なくとも1つのフィールドに field2その後、
  • を満たさなければなりません
  • 答えて

    1

    ではありませんビーン検証2.0(用documentationをご確認ください古いバージョン - ここでも同じlinkから1.0バージョンまで)必要なものを示す例9.2があります:

    <?xml version="1.0" encoding="UTF-8"?> 
    <constraint-mappings 
         xmlns="http://xmlns.jcp.org/xml/ns/validation/mapping" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/validation/mapping 
          http://xmlns.jcp.org/xml/ns/validation/mapping/validation-mapping-2.0.xsd" 
         version="2.0"> 
        <default-package>com.acme.app.domain</default-package> 
        <bean class="Customer" ignore-annotations="false"> 
         <class ignore-annotations="true"> 
          [...] 
         </class> 
        </bean> 
    
    </constraint-mappings> 
    

    だから、あなたが置くことができるはず、あなたの質問に答えるために:

    <bean class="SampleBean" ignore-annotations="false"> 
        <class ignore-annotations="true"> 
         [...] 
        </class> 
    </bean> 
    
    をし、あなたの制約を定義します。また、Hibernate Validatorを使用している場合、ScripAssert制約を調べることもできます。単純なスクリプトチェックを書くことができます。少なくとも1つのfiledがnullでないかどうかを確認するための独自の制約を書く必要はありません。お役に立てれば。

    +1

    あなたのソリューションとドキュメントのリンクをありがとうございました。私はなぜXSDを使ってオートコンプリートが 'フィールド'だけを提案するのか分かりません。 –

    関連する問題