minOccurs и maxOccurs - PullRequest
       1

minOccurs и maxOccurs

0 голосов
/ 22 января 2019

Я использую apache cxf 3.1.8, и wsdl генерируется автоматически механизмом cxf. Я хочу установить minOccurs и maxOccurs для поля ProductId, как показано ниже:

Ожидаемый:

<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 голосов
/ 09 февраля 2019

Необходимо включить проверку схемы XML как минимум на стороне сервера и, возможно, на стороне клиента, если вы также хотите обнаруживать искаженные ответы от сервера.

В CXF вы включаете проверку схемы с помощью *Свойство 1003 * на клиенте или конечной точке jaxws (на стороне сервера), как описано в CXF FAQ .Кроме того, начиная с CXF 2.3, вы можете использовать аннотацию SchemaValidation в своем коде.

Дополнительные примеры в блоге Глена Маззы: https://glenmazza.net/blog/entry/soap-xml-schema-validation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...