我需要基于WSDL创建一个客户端。我使用的是Spring 4和Spring Web服务2.2.0。使用maven-jaxb2-plugin我创建了类并能够调用Web服务。由于数据类型复杂,我正在使用对象工厂来创建一些对象。现在我有一个复杂的输入。而且我在生成的课程中找不到合适的方法。
根据SOAP UI,请求正文看起来像
<soapenv:Body>
<zhin:ZHIN_HR_CA_EVALUATOR_SEND_RFCresponse>
<IN_DATA>
<IV_PERNR>4005002</IV_PERNR>
<IT_RATERS>
<!--1 or more repetitions:-->
<ArrayOfIT_RATERSItem>
<ORGTX>?</ORGTX>
<DESIG>?</DESIG>
<ENAME>N V S Ravi Kumar</ENAME>
<ZCPERNRT>?</ZCPERNRT>
<PERNR>4005001</PERNR>
<WEIGH>?</WEIGH>
<SEQUENCE>1St Evaluator</SEQUENCE>
</ArrayOfIT_RATERSItem>
</IT_RATERS>
<IV_APCAT>1</IV_APCAT>
</IN_DATA>
</zhin:ZHIN_HR_CA_EVALUATOR_SEND_RFCresponse>
</soapenv:Body>
现在我找不到设置ArrayOfITRATERS
的方法,但我有getArrayOfITRATERSItem()
final ObjectFactory objectFactory = new ObjectFactory();
final INDATA requestValue = objectFactory.createINDATA();
requestValue.setIVPERNR(String.valueOf(id));
requestValue.setIVAPCAT(AppConstants.CA);
final ArrayOfITRATERS value = objectFactory.createArrayOfITRATERS();
value.set .....(not found ???)
requestValue.setITRATERS(value);
我的自动生成的ArrayOfITRATERS
类看起来像
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ArrayOfIT_RATERS", propOrder = {
"arrayOfITRATERSItem"
})
public class ArrayOfITRATERS {
@XmlElement(name = "ArrayOfIT_RATERSItem", required = true)
protected List<ITRATERS> arrayOfITRATERSItem;
public List<ITRATERS> getArrayOfITRATERSItem() {
if (arrayOfITRATERSItem == null) {
arrayOfITRATERSItem = new ArrayList<ITRATERS>();
}
return this.arrayOfITRATERSItem;
}
}
我不确定如何设置ArrayOfITRATERS
任何帮助表示赞赏。
答案 0 :(得分:0)
确实
getArrayOfITRATERSItem().add(myITRATERS);
解决你的问题?
默认情况下,JAXB XJC不会为集合生成setter。只需将您的项目添加到getter返回的集合中。