У меня есть этот класс Цвет:Изменение боб представительство в SOAP-службы (JAX-WS/METRO)
public class Color {
private String name;
private List<String> usedInShapes;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getUsedInShapes() {
if (usedInShapes== null) {
return null;
}
return new ArrayList<String>(usedInShapes);
}
}
И возвращается этот компонент возвращается на обертке, которая имеет список объектов Color
public class ColorListResponse {
private final List<Color > colorList;
@XmlElement(required=true)
public List<Color> getColorList() {
return colorList;
}
}
Когда вызывается метод пользователь получает ответ, как
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getColorsResponse xmlns:ns2="http://example.com/ws">
<return>
<colorList>
<name>YELLOW</name>
</colorList>
<colorList>
<name>BLUE</name>
</colorList>
<colorList>
<name>RED</name>
</colorList>
<colorList>
<name>BROWN</name>
</colorList>
</return>
</ns2:getColorsResponse>
</S:Body>
</S:Envelope>
Что мне нужно, это что-то вроде:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getColorsResponse xmlns:ns2="http://example.com/ws">
<return>
<colorList>YELLOW</colorList>
<colorList>BLUE</colorList>
<colorList>RED</colorList>
<colorList>BROWN</colorList>
</return>
</ns2:getColorsResponse>
</S:Body>
</S:Envelope>
Я пытался возиться с аннотациями, но без успеха ...
Прежде всего, спасибо за разъяснение. Я обсуждал это с моими коллегами по работе, и мы подумали, что можно переопределить XML-представление для него. Итак ... вместо того, чтобы создать еще один боб я думал, что делать некоторые вещи, как это было бы решить мою проблему: @XmlElement (требуется = истина) общественности Список getColorList() { Список colorsAsListString = новый ArrayList () ; для (Цвет c: colorList) { colorsAsListString.add (c.getName()); } вернуть цветаAsListString; } Считаете ли вы, что это хороший подход? –
Можете ли вы показать, как вы отправляете/получаете данные для ввода такого типа? По умолчанию 1-й способ (который включает атрибут name) будет без проблем считываться и немаркироваться клиентом. Нам нужно, чтобы вы уточнили, зачем вам это нужно. –
На самом деле ... Мне это нужно, потому что его попросил клиент ... –