minOccurs和maxOccurs

时间:2019-01-22 18:43:30

标签: java web-services cxf

我正在使用apache cxf 3.1.8,而wsdl是由cxf引擎自动生成的。 我想为字段ProductId设置minOccurs和maxOccurs,如下所示:

预期:

<xs:element minOccurs="0" maxOccurs="1" name="ProductId" type="xs:int"/> 

实际:

 <xs:element minOccurs="0" name="ProductId" type="xs:int"/>

换句话说,我希望元素ProductId在我的请求中必须只出现一次。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:v1="http://nameSpace/">
<soapenv:Header/>
<soapenv:Body>
<getProductService>
    <arg0>
        <ProductDate>2016-04-01</ProductDate>
        <ProductId>prod1</ProductId>
        ##<ProductId>prod1</ProductId>##
    </arg0>
</getProductService>
</soapenv:Body>
</soapenv:Envelope>

我的班级产品定义如下:

public class Product{
private static final long serialVersionUID = 1L;
@XmlElement(name = "ProductId")
protected int productId;
@XmlElement(name = "OperationType")
protected String operationType;
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您至少需要在服务器端启用XML模式验证,如果还要从服务器检测异常格式的响应,则可能需要在客户端启用。

在CXF中,如CXF FAQ中所述,使用jaxws客户端或端点(服务器端)上的schema-validation-enabled属性启用模式验证。同样从CXF 2.3开始,您可以在代码中使用SchemaValidation批注。

Glen Mazza博客上的更多示例: https://glenmazza.net/blog/entry/soap-xml-schema-validation