简体   繁体   English

Spring Web Service Maven-JAXB2-插件复杂输入

[英]Spring web service maven-jaxb2-plugin complex input

I need to create a client based on WSDL. 我需要基于WSDL创建一个客户端。 I am using Spring 4 and Spring web service 2.2.0. 我正在使用Spring 4和Spring Web Service 2.2.0。 Using maven-jaxb2-plugin I created classes and able to invoke web service. 使用maven-jaxb2-plugin创建了类并能够调用Web服务。 I am using object factory to create some objects, due to complex data type. 由于数据类型复杂,我正在使用对象工厂创建一些对象。 Now I have a complex input. 现在我有一个复杂的输入。 and I don't find appropriate methods in the generated class. 并且在生成的类中找不到合适的方法。

As per SOAP UI , the request body looks like 按照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>

Now i don't find a method to set ArrayOfITRATERS but I have getArrayOfITRATERSItem() 现在我找不到设置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);

My autogenerated ArrayOfITRATERS class looks like 我自动生成的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;
    }
}

I am not sure how to set the ArrayOfITRATERS Any help is appreciated. 我不确定如何设置ArrayOfITRATERS任何帮助,将不胜感激。

Does 是否

getArrayOfITRATERSItem().add(myITRATERS);

solve your problem? 解决你的问题?

JAXB XJC does not generate setters for collections by default. 默认情况下,JAXB XJC不会为集合生成设置器。 Just add your items to the collection returned by the getter. 只需将您的项目添加到getter返回的集合中即可。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM