2016-10-04 48 views
0

我谁是通过下面的类来表示一个非常简单的Web服务运行:(!注意WSMachineObject类已经适用于其他Web服务)伯特(web服务):如何显示对象的列表从SOAP响应

@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服务,我得到了machinehall的名称,在服务器端我可以看到所有的WSMachineObject都被终止了。

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

从我的web服务的SOAP响应看起来像这样:

Webservice SOAP response

正如你我可以看到我拿到大厅名和机器以及它们的属性列表。我试着将machine_list放入我的报告中,但它只是将字符串“machine_list”放入报告中。当我尝试添加机器的参数并将其添加到报告时,发生了同样的情况。

所以基本上我想知道如何显示SOAP对象的列表,这些对象是另一个SOAP对象的一部分。

回答

0

我找到了解决上述问题的方法。

基本上我们必须改变这种代码块

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

与这一个

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

所以,我们基本上都被告知,我们正在处理的对象的列表,在这里使用编组@XmlElementWrapper注释。