解组nillable双值

时间:2015-03-23 14:03:32

标签: java apache jaxb jax-ws

我在课堂上有两个字段:

@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:]

1 个答案:

答案 0 :(得分:0)

正如修补匠已经指出的那样,<urn:roomNumberFrom></urn:roomNumberFrom>没有失败的原因是它只是一个未知元素而没有映射到roomNumberTo字段。

如果使用JAXB声明一个可以使用@XmlElement(nillable=true)的XML元素,则空元素不代表空值。如果将XML Schema名称空间映射到'xsi'前缀,则可以声明null值,如下所示:

<urn:sizeFrom xsi:nil='true' />