2014-11-18 3 views
2

У меня есть некоторые службы с некоторыми WebMethod, который возвращает объект класса Foo:JAX-WS: XmlElementWrapper производит дополнительный клиентский код

public class Foo { 

    private List<Detail> detailList; 

    @XmlElement(name = "detail") 
    @XmlElementWrapper(name = "detailList") 
    public List<Detail> getDetailList() { 
     return detailList; 
    } 

    public void setDetailList(List<Detail> value) { 
     this.detailList = value; 
    } 

    public Foo() { 
     this.detailList = new ArrayList(); 
    } 
} 

Этот код производит правильный XML, как:

<detailList> 
    <detail> 
     <key></key> 
     <value></value> 
    </detail> 
    <detail> 
     <key></key> 
     <value></value> 
    </detail> 
<detailList/> 

После создания клиента Библиотека JAR работает нормально. Но я действительно не нравится код, мне нужно позвонить, чтобы получить список:

foo.getDetailList().getDetail(); 

Поскольку getDetailList() возвращает объект DetailList. Как я могу получить метод getDetailList(), возвращающий список без каких-либо изменений выше XML?

+0

Отъезд: http://stackoverflow.com/questions/2447091/how-generate-xmlelementwrapper-annotation-with-xjc-and-customized-binding –

ответ

0
@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "Root", propOrder = { 
    "detailList" 
}) 
public class Foo { 

    @XmlElementWrapper(name = "detailList", required = true) 
    @XmlElement(name = "detail") 
    private List<Detail> detailList; 

    public List<Detail> getDetailList() { 
     return detailList; 
    } 

    public void setDetailList(List<Detail> value) { 
     this.detailList = value; 
    } 

    public Foo() { 
     this.detailList = new ArrayList(); 
    } 
} 
+0

Спасибо за ответ, но изменить тип доступа не имеет никакого эффекта. wsimport все еще генерирует внутренний класс Foo.DetailList с методом getDetail() – chaplean

Смежные вопросы