Marcus Leon
Marcus Leon

Reputation: 56659

JAXB required=true doesn't seem to require

We have this JAXB annotation:

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

If there are no Strategy elements present, no exception is thrown.. why is this? Shouldn't we get an exception?

Upvotes: 32

Views: 19997

Answers (2)

Ryan Ransford
Ryan Ransford

Reputation: 3222

Additionally, you could use the beforeMarshal and afterUnmarshal methods to validate inputs as spec'd in Marshaller and Unmarshaller.

The scheme under which these methods are accessed will also allow you to add an arbitrary throws clause to the method declaration. This means that when implementing these methods, you can safely use javax.xml.bind.MarshalException and javax.xml.bind.UnmarshalException (or whatever sort of Exception you want) to signal validation errors.

Upvotes: 1

skaffman
skaffman

Reputation: 403441

The JAXB reference implementation doesn't use this attribute for validation, it's purely there for documentation purposes.

If you need to validate the documents, you need to define an XML Schema, and inject it into the Marshaller or Unmarshaller, using SchemaFactory.

Upvotes: 39

Related Questions