【问题标题】:How to ignore empty parameters in web service?如何忽略 Web 服务中的空参数?
【发布时间】:2013-04-08 14:48:50
【问题描述】:

我有以下问题。我想做网络服务,它有很多输入参数。其中一些是双类型的。问题是一些双打不是必需的,可以作为空标签传递给我的服务,比如

<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
  • @better_use_mkstemp 这样 WS 会抛出异常,表示参数丢失,关键是我无法删除这些标签,即使它们是空的,但必须将空标签值设为 null,没有 WL 尝试解析它
  • 尝试添加此属性:minOccurs="0"(根据需要调整其命名空间)

标签: java web-services weblogic jax-rpc


【解决方案1】:

请查看定义消息结构的 XSD。 关注可以为 XSD 中的任何元素设置的两个不同但特殊的属性,用于消息格式。 它们是:minOccurs 和 nillable。 您的问题的答案在于将 nillable 属性设置为“true”(默认为 false。)

让我们看看 nillable 是什么意思, nillable value T/F 表示一个元素是否可以有一个空值(空字符串)。

所以,如果 nillable 设置为 true 为

然后在你的 XSD 中 那个元素可以像这些 在您的 SOAP 请求/响应中。

但如果 nillable 设置为 false (这是默认设置) 那么你可以期待你现在得到的错误。

我希望它有所帮助。谢谢。

【讨论】:

    猜你喜欢
    • 2020-05-23
    • 2020-04-13
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多