Spring Web服务maven-jaxb2-plugin复杂输入

时间:2014-10-12 11:38:48

标签: spring web-services jaxb maven-3

我需要基于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 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

确实

getArrayOfITRATERSItem().add(myITRATERS);

解决你的问题?

默认情况下,JAXB XJC不会为集合生成setter。只需将您的项目添加到getter返回的集合中。