2016-10-04 41 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註釋。