JAXB required=true 似乎不需要

2022-09-01 09:53:21

我们有这个 JAXB 注释:

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

如果不存在任何元素,则不会引发异常。这是为什么呢?难道我们不应该有一个例外吗?Strategy


答案 1

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

如果需要验证文档,则需要定义一个 XML 模式,并使用 将其注入 or 中。MarshallerUnmarshallerSchemaFactory


答案 2

此外,您可以使用 and 方法来验证 MarshallerUnmarshaller 中规范的输入。beforeMarshalafterUnmarshal

访问这些方法所采用的方案还允许您向方法声明中添加任意子句。这意味着在实现这些方法时,您可以安全地使用和(或您想要的任何类型的异常来表示验证错误。throwsjavax.xml.bind.MarshalExceptionjavax.xml.bind.UnmarshalException


推荐