Birt(Webservice):如何显示SOAP响应中的对象列表

时间:2016-10-04 07:04:30

标签: java web-services soap birt

我有一个非常简单的webservice运行,通过以下类表示:(请注意,WSMachineObject类已经可以在另一个Web服务上运行!)

@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();
    }

}

如果我在Birt中连接到这个Web服务,我会得到机器的名称,在服务器端,我可以看到所有WSMachineObject也被停止。

我的问题是:如何创建一个显示机器名称(已经有效)的数据集,并在报告中显示所有WSMachineObjects中的选定信息。

来自我的webservice的SOAP响应如下:

Webservice SOAP response

我可以看到我获得了大厅名称和具有属性的机器列表。我尝试将machine_list放入我的报告中,但它只是将String&#34; machine_list&#34;进入报告。当我尝试添加机器的参数并将其添加到报告时,同样的事情发生了。

所以基本上我想知道如何显示属于另一个SOAP对象的SOAP对象列表。

1 个答案:

答案 0 :(得分:0)

我找到了所描述问题的解决方案。

基本上我们必须更改此代码

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

这一个

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

所以我们基本上做的是告诉编组人员我们正在使用@XmlElementWrapper注释来处理对象列表。