我有一个带有以下字段的 DTO 类:
@XmlAttribute
@NotNull
private Integer number = null;
我正在尝试解组 xml,例如
... number="" ...
我需要 nuber 字段保持为空,以便引发验证异常。相反,JAXB 将其解组为 0。我怎样才能使其行为正确?
我有一个带有以下字段的 DTO 类:
@XmlAttribute
@NotNull
private Integer number = null;
我正在尝试解组 xml,例如
... number="" ...
我需要 nuber 字段保持为空,以便引发验证异常。相反,JAXB 将其解组为 0。我怎样才能使其行为正确?
有争议的是,它的行为是正确的。number=""
并不意味着 null,它是一个空字符串,JAXB 必须尝试正确处理它,它决定最接近 Integer 数据类型的空字符串为零。如果你想要一个null
,那么number
应该完全省略该属性。
如果你想自定义这种行为,你需要编写一个子类,javax.xml.bind.annotation.adapters.XmlAdapter
它可以按照你想要的方式处理原始String和boundtype之间的转换(即String和Integer之间)。然后,您通过使用 注释该字段来连接该适配器@XmlJavaTypeAdapter
。