我有一个非常简单的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响应如下:
我可以看到我获得了大厅名称和具有属性的机器列表。我尝试将machine_list放入我的报告中,但它只是将String&#34; machine_list&#34;进入报告。当我尝试添加机器的参数并将其添加到报告时,同样的事情发生了。
所以基本上我想知道如何显示属于另一个SOAP对象的SOAP对象列表。
答案 0 :(得分:0)
我找到了所描述问题的解决方案。
基本上我们必须更改此代码
@XmlElement(name = "machine_list")
private ArrayList<WSMachineObject> machines = new ArrayList<>();
这一个
@XmlElementWrapper
@XmlElement(name = "machine_list")
private ArrayList<WSMachineObject> machines = new ArrayList<>();
所以我们基本上做的是告诉编组人员我们正在使用@XmlElementWrapper
注释来处理对象列表。