次のようなフィールドを持つ DTO クラスがあります。
@XmlAttribute
@NotNull
private Integer number = null;
次のようなxmlを非整列化しようとしています
... number="" ...
検証例外がスローされるように、nuber フィールドを null のままにする必要があります。代わりに、JAXB はそれを 0 として非整列化します。正しく動作させるにはどうすればよいですか?
次のようなフィールドを持つ DTO クラスがあります。
@XmlAttribute
@NotNull
private Integer number = null;
次のようなxmlを非整列化しようとしています
... number="" ...
検証例外がスローされるように、nuber フィールドを null のままにする必要があります。代わりに、JAXB はそれを 0 として非整列化します。正しく動作させるにはどうすればよいですか?
議論の余地はありますが、正しく動作しています。number=""
はnullを意味するのではなく、空の文字列であり、JAXBはそれを正しく処理する必要があり、整数データ型の空の文字列に最も近いものはゼロであると判断します. が必要な場合はnull
、number
属性を完全に省略してください。
この動作をカスタマイズしたい場合はjavax.xml.bind.annotation.adapters.XmlAdapter
、生の文字列と境界型の間 (つまり、文字列と整数の間) の変換を希望どおりに処理できるサブクラスを作成する必要があります。次に、フィールドに で注釈を付けて、そのアダプターを結び付けます@XmlJavaTypeAdapter
。