【发布时间】:2015-01-15 11:09:14
【问题描述】:
我在调用 webService 时遇到了一个大问题。当我导入 wsdl 的类时,我将此 @WebService 作为接口:
public void consultarProgramaCronicos(
@WebParam(name = "consultarProgramaCronicos", targetNamespace = "") ConsultarProgramaCronicosVO consultarProgramaCronicos,
@WebParam(name = "sip", targetNamespace = "", mode = WebParam.Mode.OUT) Holder<String> sip,
@WebParam(name = "programaCronico", targetNamespace = "", mode = WebParam.Mode.OUT) Holder<List<ProgramaCronicoVO>> programaCronico,
@WebParam(name = "marcaCronicidad", targetNamespace = "", mode = WebParam.Mode.OUT) Holder<List<MarcaCronicidadVO>> marcaCronicidad)
throws ConsultarProgramaCronicosFault;
所以在我的课堂上,当我调用这个方法时,我需要这样调用它:
final Holder<String> sipHolder = new Holder<String>();
final Holder<List<ProgramaCronicoVO>> listProgramaCronico = new Holder<List<ProgramaCronicoVO>>();
final Holder<List<MarcaCronicidadVO>> listMarcaCronicidad = new Holder<List<MarcaCronicidadVO>>();
cronicos.consultarProgramaCronicos(cpc, sipHolder, listProgramaCronico, listMarcaCronicidad);
我传递了一个带有我想要的参数的 cpc 对象,并传递了 3 个持有者作为答案。 问题是我在列表中收到一个对象,但该对象的原始参数为“null”。
这是我收到的 xml:
<soap:Body wsu:Id="id-1995630735" xmlns:wsu="">
<consultarProgramaCronicosResponse xmlns="">
<sip>1703595</sip>
<marcaCronicidad>
<tipoMarca>CCC</tipoMarca>
<resultado>624</resultado>
<estadosalud>5</estadosalud>
<gravedad>1</gravedad>
<nivel>1</nivel>
<descripcionNivel>Texto cualquiera.</descripcionNivel>
</marcaCronicidad>
</consultarProgramaCronicosResponse></soap:Body>
在“sip”持有人我有正确的价值。但是在列表持有者中,我有一个包含 MarcaCronicidadV0 元素的列表,但该元素的所有字符串均为空。
现在,我向您展示 .wsdl 的一部分:
<xsd:complexType name="consultarProgramaCronicosResponse">
<xsd:sequence>
<xsd:element minOccurs="0" name="sip" type="xs:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="programaCronico" type="tns:programaCronicoVO"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="marcaCronicidad" type="tns:marcaCronicidadVO"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="marcaCronicidadVO">
<xsd:sequence>
<xsd:element name="tipoMarca" type="xs:string"/>
<xsd:element minOccurs="0" name="resultado" type="xs:string"/>
<xsd:element minOccurs="0" name="estadosalud" type="xs:string"/>
<xsd:element minOccurs="0" name="gravedad" type="xs:string"/>
<xsd:element minOccurs="0" name="nivel" type="xs:string"/>
</xsd:sequence>
</xsd:complexType>
这是 MarcaCronicidadVO 类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "marcaCronicidadVO", namespace = "", propOrder = { "tipoMarca",
"resultado", "estadosalud", "gravedad", "nivel" })
public class MarcaCronicidadVO {
@XmlElement(required = true)
protected String tipoMarca;
protected String resultado;
protected String estadosalud;
protected String gravedad;
protected String nivel;
//getters y setters here
最后是“主要对象”:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "consultarProgramaCronicosResponse", namespace = "", propOrder = { "sip", "programaCronico","marcaCronicidad" })
public class ConsultarProgramaCronicosResponse {
protected String sip;
protected List<ProgramaCronicoVO> programaCronico;
protected List<MarcaCronicidadVO> marcaCronicidad;
public String getSip() {
return sip;
}
public void setSip(String value) {
this.sip = value;
}
public List<MarcaCronicidadVO> getMarcaCronicidad() {
if (marcaCronicidad == null) {
marcaCronicidad = new ArrayList<MarcaCronicidadVO>();
}
return this.marcaCronicidad;
}
public List<ProgramaCronicoVO> getProgramaCronico() {
if (programaCronico == null) {
programaCronico = new ArrayList<ProgramaCronicoVO>();
}
return this.programaCronico;
}
为什么我没有任何错误,并且我收到了 3 个正确的持有人,但在持有人列表中我有一个元素,其属性字符串为空值??????
对不起,我的英语。谢谢!
【问题讨论】:
标签: list soap null wsdl jax-ws