我在课堂上有两个字段:
@XmlElement(nillable=true)
protected Integer roomNumberTo;
@XmlElement(nillable=true, type = Double.class)
protected Double sizeFrom;
这两个字段都是可选的。我面临的问题是整数字段可以接受空值但是双重不能。
<瓮:sizeFrom> < /瓮:sizeFrom> //它总是需要一个值。
<瓮:roomNumberFrom> < /瓮:roomNumberFrom> //
如果上述请求被提交,我会收到一个解组错误:
在org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:881)
在org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:702)
引起:javax.xml.bind.UnmarshalException: - 链接异常: [java.lang.NumberFormatException:]
答案 0 :(得分:0)
正如修补匠已经指出的那样,<urn:roomNumberFrom></urn:roomNumberFrom>
没有失败的原因是它只是一个未知元素而没有映射到roomNumberTo字段。
如果使用JAXB声明一个可以使用@XmlElement(nillable=true)
的XML元素,则空元素不代表空值。如果将XML Schema名称空间映射到'xsi'前缀,则可以声明null值,如下所示:
<urn:sizeFrom xsi:nil='true' />