如何在Web服务中忽略空参数?

3

我有一个问题,我想创建一个Web服务,其中有许多输入参数。其中一些是Double类型的。问题在于,其中一些Double类型的参数不是必需的,可以作为空标签传递给我的服务,例如:

<param xsi:type="xsd:double"></param>

因此,WebLogic在转到我的代码之前会尝试解析那个双倍数,然后我就得到了它。

<faultstring>empty String</faultstring>

响应中包含异常信息

<bea_fault:stacktrace xmlns:bea_fault="http://www.bea.com/servers/wls70/webservice/fault/1.0.0">java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1011)
at java.lang.Double.parseDouble(Double.java:540)

我的主要问题是,我该如何将空标签(null)转换为Double变量?或者在WebLogic尝试解析之前,我该如何指定空值?

谢谢您的帮助!

你能否明确将其设置为null,例如<param xsi:type="xsd:double" xsi:nil="true"></param>? - Display Name is missing
@better_use_mkstemp 这样 WS 抛出异常,指出参数缺失的问题。重点是我不能删除这些标签,即使它们是空的,但必须将空标签值作为 null,而无需让 WL 尝试解析它。 - Kiman
尝试添加此属性:minOccurs="0"(根据需要调整其命名空间) - acdcjunior
1个回答

1
请查看您的XSD文件,其中定义了消息结构。关注XSD中任何元素都可以设置的两个不同但特殊的属性:minOccurs和nillable。解决您的问题的答案在于将nillable属性设置为“true”(默认值为false)。让我们看看nillable是什么意思,nillable值T / F表示元素是否可以具有空值(空字符串)。因此,如果在您的XSD中将nillable设置为true,如<element name="anyElement" nillable="true"/>,则该元素可以像这样<anyEement></anyElement>或<anyElement/>出现在您的SOAP请求/响应中。但是,如果nillable设置为false(默认值),则您可能会遇到当前错误。希望对您有所帮助。谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接