我创建了一个简单的类型
<xsd:simpleType name="IntOrBlank"> <xsd:union memberTypes="xsd:int"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value=""/> </xsd:restriction> </xsd:simpleType> </xsd:union> </xsd:simpleType>
然后,我使用wsdl2java从axis2创建存根,发送工作和接收似乎都正常工作,直到我尝试从这种类型获得整数值。我的代码是这样的:
IntOrBlank get_part_custom_field7 = each_record.get_part_custom_field7();Object对象= get_part_custom_field7.getObject();
对象现在为空。即使SOAP消息作为
<bm:\_part\_custom\_field7>9</bm:\_part\_custom\_field7>
发布于 2010-07-22 02:17:37
我对代码进行跟踪,发现wsdl2java生成的存根不正确。创建的对象是java.math.BigInteger,而存根做了检查以确保对象是Integer的实例,因此该对象为null,而不引发任何异常。我把类型改为
解决了这个问题
发布于 2010-07-22 02:26:05
我建议你停止以这种方式使用union,也许根本不使用。
你刚刚找到了一个不按你喜欢的方式处理它的工具--还有很多其他的工具。在这种情况下,union并没有多大意义。在这种情况下应该使用什么Java类型?Object
在这种情况下:
<xs:simpleType name="SillyUnion">
<xs:union memberTypes="xs:int xs:string"/>
</xs:simpleType>您希望wsdl2java用于此的数据类型是什么?Object?使用这些数据的程序员将如何确定是否包含了整数或字符串数据?你的意思是每个使用这些数据的人都应该先检查一下吗?
联姻是当时听起来是个好主意的事情之一,但事实证明,它并没有以前想象的那么有帮助。
https://stackoverflow.com/questions/3241736
复制相似问题