Birt (Webservice): отображение списка объектов из ответа SOAP

У меня есть очень простой WebService работает, который представлен через следующий класс: (обратите внимание, что WSMachineObjectкласс уже работает на другом webservice!)

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MachinehallObject")
public class WSMachinehallObject {

    @XmlElement(name = "machine_list")
    private ArrayList<WSMachineObject> machines = new ArrayList<>();

    @XmlElement(name = "name")
    protected String name;

    public WSMachinehallObject(IMachineHall machineHall) {

        for (IMachine machine : machineHall.getMachines()) {
            machines.add(new WSMachineObject(machine));
        }

        this.name = machineHall.getName();
    }

}

Если я подключусь к этому webservice в Birt, я получу имя machinehall и на стороне сервера я могу видеть, что все WSMachineObjectтакже ceated.

Мой вопрос: Как я могу создать набор данных, который показывает имя машинного зала (который уже работает) и показывает выбранную информацию из всех WSMachineObjects также в отчете.

Ответ SOAP от my webservice выглядит так:

WebService SOAP ответ

Как вы можете видеть, я получаю название зала и список машин с их атрибутами. Я попытался поместить machine_list в свой отчет, но он просто поместил строку «machine_list» в отчет. Когда я попытался добавить параметр машин и добавил его в отчет, произошло то же самое.

Поэтому в основном я хочу знать, как показать список объектов SOAP, которые являются частью другого объекта SOAP.

1 ответ

  1. Я нашел решение описанной проблемы.

    В основном мы должны изменить этот код кусок

     @XmlElement(name = "machine_list")
        private ArrayList<WSMachineObject> machines = new ArrayList<>();
    

    с этим

    @XmlElementWrapper
    @XmlElement(name = "machine_list")
    private ArrayList<WSMachineObject> machines = new ArrayList<>();
    

    Так что мы в основном сделали, чтобы сказать маршаллеру, что мы имеем дело со списком объектов здесь, используя @XmlElementWrapperаннотацию.