【问题标题】:Web Service (JaxB-WS) - Exception when null value eneteredWeb 服务 (Jax-WS) - 输入空值时出现异常
【发布时间】:2014-01-10 15:54:02
【问题描述】:

我使用 JAXB 创建了一个基本的 Web 服务,在测试 Netbeans/Glassfish 中的基本功能时,我注意到如果没有输入任何值,它会抛出异常,因为该值为 null。

https://www.dropbox.com/s/5kjyvqlzwy56vqm/Stackoverflow.png

我希望能够使变量不需要或返回更多信息的错误异常。

                  <xsd:element name="Flight_No" type="xsd:int"/>

我需要修改 XML 架构吗?还是在 Web 服务 java 代码中抛出异常?还是两者都有?

【问题讨论】:

    标签: xml web-services exception jaxb wsdl


    【解决方案1】:

    WebServiceTesterServlet 期望您的 Flight_No 元素具有有效值。根据您的 XML 架构,元素不允许为空或不存在,因此您需要确保它具有有效值,例如:

    <Flight_No>123</Flight_No>
    

    更新 #1

    支持空元素

    有没有办法让它为空?

    就 XML Schema 而言,很少有类型支持空元素。最常见的是xs:string

    支持缺席元素

    您的元素是必需的。如果你想让它成为可选的,你可以添加minOccurs="0" 属性。

    <xsd:element name="Flight_No" type="xsd:int" minOccurs="0"/>
    

    在必需元素中表示 Null

    您可以使用nillable="true" 属性表明您的元素能够表示null。

    <xsd:element name="Flight_No" type="xsd:int" nillable="true"/>
    

    更多信息


    更新 #2

    最后一个问题...有没有办法让它在 XML 中成为必需的 架构,但在将参数传递给 Web 服务时没有?

    JAXB/JAX-WS 将能够正确处理空元素。我不确定你需要做什么才能让WebServiceTestServlet 开心。

    【讨论】:

    • 有没有办法让它为空?
    • @user2229747 - 我已根据您的评论更新了我的答案。
    • 非常感谢,这对负载有帮助。
    • 最后一个问题......有没有办法让它在 XML 模式中成为必需,但在将参数传递给 Web 服务时不需要?
    • @user2229747 - JAXB/JAX-WS 将能够正确处理空元素。我不确定你需要做什么才能让WebServiceTestServlet 开心。
    猜你喜欢
    • 2011-08-21
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多