java – 生成的Web服务客户端类,没有setter
我已经为SOAP Web服务创建了一个客户端,但是在生成的代码中,一些类错过了setter方法.
对象的WSDL如下所示: <xsd:complexType name="UserDefinedFieldArray"> <xsd:sequence> <xsd:element name="userDefinedField" minOccurs="0" maxOccurs="unbounded" type="ns0:UserDefinedField"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="UserDefinedField"> <xsd:sequence> <xsd:element name="fieldName" type="xsd:string"/> <xsd:element name="fieldValue" type="xsd:string"/> <xsd:element name="listId" type="xsd:string"/> </xsd:sequence> </xsd:complexType> 这些对象只有setXXX(),Java Docs坚持这??样: “此访问器方法返回对实时列表的引用,而不是快照.因此,您对返回列表所做的任何修改都将出现在JAXB对象中.这就是为什么testSuiteUdfs属性没有set方法.例如,要添加新项,请执行以下操作:getTestSuiteUdfs().add(newItem);“ 虽然我的逻辑告诉我,更新的列表无法到达服务器,直到你发送到那里? 我设法找到的唯一相关的东西:http://www-01.ibm.com/support/docview.wss?uid=swg21440294.但它根本没用. 请问有谁可以告诉我哪种方式可以挖掘?因为我根本不明白这是怎么回事. 解决方法
更新JAXB映射的域对象不会导致与服务器的通信. JAXB(JSR-222)是用于将对象转换为XML或从XML转换对象的标准. JAX-WS(SOAP)和JAX-RS(RESTful)框架利用它来生成/使用通过线路在客户端和服务器之间发送的消息.
UPDATE
所有这些意味着你获得的List是真正的List而不是副本.您可以使用以下代码对其进行测试: System.out.println(customer.getPhoneNumbers().size()); // returns x customer.getPhoneNumbers().add(new PhoneNumber()); System.out.println(customer.getPhoneNumbers().size()); // returns x + 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java.lang.IllegalStateException:没有SessionManager
- data-annotations – 为什么AutoFixture不使用StringLength
- 选择Spring Boot项目的内嵌容器的理由
- java web-application初始化和关机
- java – 使用JAX-WS在WebLogic中没有模式导入的单个WSDL
- 如何获取Java中Swatch Internet Time的当前时间?
- java – GWT,Google App Engine,TimerTask或ServiceImpl中的
- java中如何跳出多层循环
- java – 使用RESTEasy进行错误的特殊字符编码
- 我怎么能用java像素化jpg?