web-dev-qa-db-ja.com

JAXB required = trueは必要ないようです

このJAXBアノテーションがあります:

 @XmlElement(name = "Strategy", required = true)
 protected List<Strategy> strategy;

Strategy要素が存在しない場合、例外はスローされません。これはなぜですか?例外を取得するべきではありませんか?

28
Marcus Leon

JAXBリファレンス実装は検証にこの属性を使用しません。これは純粋に文書化の目的で使用されます。

ドキュメントを検証する必要がある場合は、XMLスキーマを定義し、Marshallerを使用してUnmarshallerまたはSchemaFactoryに挿入する必要があります。

36
skaffman

さらに、beforeMarshalおよびafterUnmarshalメソッドを使用して、 Marshaller および nmarshaller で指定されているように入力を検証できます。

これらのメソッドにアクセスするスキームでは、メソッド宣言に任意のthrows句を追加することもできます。これは、これらのメソッドを実装するときに、javax.xml.bind.MarshalExceptionjavax.xml.bind.UnmarshalException(または任意の種類のException検証エラーを通知します。

1
Ryan Ransford