JAXB required = true似乎并不需要

时间:2010-04-19 17:49:17

标签: java xml jaxb

我们有这个JAXB注释:

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

如果没有Strategy个元素,则不会抛出任何异常..为什么会这样?我们不应该得到例外吗?

2 个答案:

答案 0 :(得分:36)

JAXB参考实现不使用此属性进行验证,纯粹出于文档目的。

如果您需要验证文档,则需要定义XML Schema,并使用Marshaller将其注入UnmarshallerSchemaFactory

答案 1 :(得分:1)

此外,您可以使用beforeMarshalafterUnmarshal方法验证MarshallerUnmarshaller中指定的输入。

访问这些方法的方案还允许您向方法声明添加任意throws子句。这意味着在实施这些方法时,您可以安全地使用javax.xml.bind.MarshalExceptionjavax.xml.bind.UnmarshalException (或任何类型的Exception 来表示验证错误。