8

我有一个带有以下字段的 DTO 类:

@XmlAttribute
@NotNull
private Integer number = null;

我正在尝试解组 xml,例如

...  number=""  ...

我需要 nuber 字段保持为空,以便引发验证异常。相反,JAXB 将其解组为 0。我怎样才能使其行为正确?

4

1 回答 1

9

有争议的是,它行为是正确的。number=""并不意味着 null,它是一个空字符串,JAXB 必须尝试正确处理它,它决定最接近 Integer 数据类型的空字符串为零。如果你想要一个null,那么number应该完全省略该属性。

如果你想自定义这种行为,你需要编写一个子类,javax.xml.bind.annotation.adapters.XmlAdapter它可以按照你想要的方式处理原始String和boundtype之间的转换(即String和Integer之间)。然后,您通过使用 注释该字段来连接该适配器@XmlJavaTypeAdapter

于 2011-02-27T12:46:15.100 回答