有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAX-WS中SOAP-WS的java枚举参数

我想问一下,我如何在JAX-WS中指定SOAP Web服务,这样,如果我希望一个字段由值A或值B填充。任何其他值都应返回错误

我想到了Java中的枚举,但仍然不知道如何实现它

有什么建议吗?先谢谢你


共 (2) 个答案

  1. # 1 楼答案

    您可以对相同的对象使用枚举

    在WSDL的XSD中,您将定义如下所示的元素:-

     <xsd:complexType name="Value">
        <xsd:sequence>
          <xsd:element name="elementValue" type="constantType" />
        </xsd:sequence>
    </xsd:complexType>
    
    
    <xsd:simpleType name="constantType">
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="A" />
        <xsd:enumeration value="B" />
      </xsd:restriction>
    </xsd:simpleType>
    

    在上面的示例中,您说有一个名为elementValue的元素是constantType,constantType的值可以是A或B,类型为String

    当您谈论SOAP时,基本上WSDL是一个您需要与服务用户共享的契约。如果一个特定字段只能有两个值,那么应该在您的合同中提到这一点,即WSDL

    在java中,您可以使用Enum定义如下:

    public enum ElementValue
    {
      A,
      B;
    }
    

    现在,您可以使用以下语法访问这些值:-

    ElementValue.A
    ElementValue.B
    
  2. # 2 楼答案

    如果在Java枚举上使用注释XmlEnum,则生成的WSDL包含简单类型。例如in the documentation for XmlEnumValue

    @XmlEnum
    public enum ElementValue
    {
        A,
        B;
    }
    

    结果将生成以下WSDL部分:

     <xs:simpleType name="ElementValue">
        <xs:restriction base="xs:string">
           <xs:enumeration value="A"/>
           <xs:enumeration value="B"/>             
        </xs:restriction
     </xs:simpleType>