我想问一下如何在 JAX-WS 中指定SOAP Web服务,这样如果我想要按值A
或值{{}填充字段1}}。任何其他值都应该返回错误。
我想到了Java中的枚举,但仍然没有弄清楚如何实现它。
有什么建议吗?提前谢谢。
答案 0 :(得分:0)
您可以使用相同的枚举。
在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
答案 1 :(得分:0)
如果在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>