2016-08-17 4 views
0

Я разрабатываю одно мыльное обслуживание с использованием Spring-Cxf. здесь у меня есть структура ответа, как показано нижеДобавить дополнительный тег или элемент в реакции мыла с помощью Jaxws

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "response", propOrder = { 
    "name", 
    "addressList" 
}) 
public class Response 
{ 

private String name; 
private List<Address> addressList; 
} 

-- getter and setter follows 

Текущий ответ приходит как

<response> 
    <name>RASSI ANDREA</name> 
    <addressList type="1"> 
     <address>Address 1</address> 
     <address>Address 2</address> 
     <address>Address 3</address> 
    </addressList> 
    <addressList type="2"> 
     <address>Address 4</address> 
     <address>Address 5</address> 
     <address>Address 6</address> 
    </addressList> 
</response> 

Но реальная структура ответа мне нужно ниже, где добавляется новый тег «строка».

<response> 
    <name>RASSI ANDREA</name> 
    <row> 
     <addressList type="1"> 
     <address>Address 1</address> 
     <address>Address 2</address> 
     <address>Address 3</address> 
     </addressList> 
    </row> 
    <row> 
     <addressList type="2"> 
     <address>Address 4</address> 
     <address>Address 5</address> 
     <address>Address 6</address> 
     </addressList> 
    </row> 
</response> 

Может кто-нибудь объяснить мне, где я должен внести изменения, чтобы достичь этого? Любое изменение в аннотации или Создание нового класса как «ряд» (хотя это будет плохой подход, я думаю)

+0

Почему вы это делаете? Дополнительный элемент должен быть в WSDL, и ваш код должен быть автогенерирован. Таким образом, процедура должна быть: 1. добавьте элемент в WSDL, 2. восстановите код, 3. измените свою реализацию и 4. уведомите всех клиентов об изменении WSDL. И, возможно, 4. действительно должно быть первым. – wallenborn

ответ

1

Добавление аннотаций @XmlElementWrapper(name="row") к вашему addressList добавит <row> тег в XML. Попробуйте.

Вам нужно будет добавить следующее заявление:

импорт javax.xml.bind.annotation.XmlElementWrapper;

public class Response { 

    private String name; 
    @XmlElementWrapper(name="row") // Add this line here 
    private List<Address> addressList; 
} 
+0

спасибо за ответ – Sambuddha

+0

Этот подход работает на примере, о котором я упоминал. Но что, если есть несколько свойств до нового тега .. пример

Адрес 1
моего name1 <типа Addresslist = "2">
Адрес 4
мой name2
, где есть несколько свойств под новым тегом, который добавлен, тогда этот aparoach не работает – Sambuddha