2011-08-03 9 views
5

JAX-WSを使用してjava-first Webサービスを実装していて、@SchemaValidationを使用してwebMethodパラメータに必要な要素を検証しようとしています。 ここに私の必要な属性を宣言しています。JAX-WS/JAXBでschemaValidationを使用してnull要素を検証する方法

@XmlElement(required=true)は、私のwsdlスキーマを完全に(minOccurは0ではなく)マップしますが、schemaValidationは渡されたnull要素を検証しません。

@XmlElement(required=true, nillable=false) 
public String getClubName() { 
    return clubName; 
} 

APIを使用するすべてのクライアントはnull要素を渡すことができます。 JAXBを使ってこれを防ぐ方法はありません。

一方、Beanの検証は次のように動作します。ただし、文字列フィールドではありません

@Column(name = "FOUNDATION_YEAR", nullable = false) 
private Integer foundationYear; //schemaValidation validates 

@Column(name = "CLUB_NAME", length=100, nullable = false) 
private String clubName; //schemaValidation does not validate 

文字列値を検証するために、どのようにschemaValidationを使用できますか? 1つの方法は制限を付けることですが、java-first Webサービスを使用するときにはできません。

<xsd:simpleType name="NotEmptyString"> 
    <xsd:restriction base="xsd:string"> 
    <xsd:minLength value="1"/> 
    </xsd:restriction> 
</xsd:simpleType> 

関連記事

Validation for generated JAXB Classes (JSR 303/Spring)

How to enable schema validation so that JAXB rejects empty element?

答えて

0

hereが言ったようどうやらあなたはJAXBを使用してそれを行うことができます。あるいは、hereのようにスキーマ検証フレームワークを使用することもできます。しかし、IMHOはどちらのアプローチもコードに混乱を招くので、私はGuava's Preconditionsに行きます。これにより、これを迅速かつきれいに行うことができます。あまりにも悪いことに、この自動サポートはありません。/。

関連する問題