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