JAXB:如何使JAXB NOT将空字符串解组为0

时间:2011-02-27 12:40:44

标签: java jaxb unmarshalling

我有一个DTO类,其字段如下:

@XmlAttribute
@NotNull
private Integer number = null;

我正在尝试解组xml,例如

...  number=""  ...

我需要nuber字段保持null,以便抛出验证异常。相反,JAXB将其解组为0。 如何使其表现正确?

1 个答案:

答案 0 :(得分:9)

Arguable, 表现正常。 number=""并不意味着null,它是一个空字符串,并且JAXB必须尝试正确处理它,并且它确定与Integer数据类型的空字符串最接近的是零。如果您想要null,则应完全省略number属性。

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