Ось, генерирующая ноль на ненулевом массиве - PullRequest
0 голосов
/ 23 марта 2012

У меня есть следующие теги в WSDL:

 <xs:element name="promoCodeValues" maxOccurs="1" minOccurs="0" >
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element   nillable="false" name="promoCode" type="ac:stringMax20"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element> 

Когда я использую Eclipse и генерирую клиент Axis (используя Axis 1.4), я получаю следующие строки описания в своем классе:

elemField = new org.apache.axis.description.ElementDesc();
    elemField.setFieldName("promoCodeValues");
    elemField.setXmlName(new javax.xml.namespace.QName("http://www.moneygram.com/AgentConnect1105", "promoCodeValues"));
    elemField.setXmlType(new javax.xml.namespace.QName("http://www.moneygram.com/AgentConnect1105", "stringMax20"));
    elemField.setMinOccurs(0);
    elemField.setNillable(false);
    elemField.setItemQName(new javax.xml.namespace.QName("http://www.moneygram.com/AgentConnect1105", "promoCode"));
    typeDesc.addFieldDesc(elemField);

В моем Java-коде я вызываю это, чтобы заполнить promoCodeValues:

String[] promoCodes = {"test"};
request.setPromoCodeValues(promoCodes);

Но в моем XML у меня всегда есть это:

<promoCodeValues><promoCode xsi:nil="true"/></promoCodeValues>

Я нашел это в JIRA Axis: https://issues.apache.org/jira/browse/AXIS-2054?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel#issue-tabs

Я пошагово следовал предоставленному патчу и обнаружил, что все уже было там (я использую ось 1.4).Кто-нибудь знает, как решить эту проблему ??Я действительно запутался и не хочу переходить на что-то другое.

1 Ответ

0 голосов
/ 13 июня 2012

Решено! Я выкладываю ответ на тот случай, если у кого-то возникнет такая же проблема. На самом деле в Eclipse есть опция, которую можно использовать для генерации bean-компонентов вместо Arrays. Зайдите в Окно -> Настройки -> Веб-сервисы -> Axis Emitter и отметьте

Предпочитает сборку bean-компонентов прямым массивам для упакованных типов XML-массивов

Затем восстановите ваш клиент веб-службы

...