JAXB中<foo> </foo>和null之间有什么区别?

时间:2011-10-03 14:34:31

标签: java web-services

我已经创建了一个使用JAXB的Java Webservice应用程序。当我使用SoapUI测试我的应用程序并发送类似<foo></foo>的SOAP消息时,它将转换为0,但如果我的SOAP消息中没有<foo>标记,它将转换为{ {1}}。为什么null未转换为<foo></foo>?我怎样才能改变它?

null

2 个答案:

答案 0 :(得分:2)

null通常表示“未知”。由于foo不存在,所以绝对没有关于它的信息。您不能指定默认值0,因为这可能是绝对错误/灾难性的。你所能做的就是说“我不知道”,归结为零。另一方面,<foo></foo>表示foo存在且为空,通常归结为0

答案 1 :(得分:1)

如果您使用的是JAXB 2.2,则可以在参数级别指定@XmlElement(nillable=true)注释,以将XML表示为xsi:nil="true"

@WebMethod
public void test(@XmlElement(nillable=true) Integer foo) {
    System.out.print(foo);
}