我正在使用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;
}
感谢您的帮助。
答案 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