浏览 2891 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-19
windows XP, jdk1.6, CXF2.3 test.wsdl文件: <xs:complexType name="CalendarTime"> <xs:sequence> <xs:choice> <xs:element name="day" type="xs:unsignedInt"/> <xs:element name="week" type="xs:unsignedInt"/> </xs:choice> <xs:element name="seconds" type="xs:unsignedInt"/> </xs:sequence> </xs:complexType> 利用CXF2.3的wsdl2java命令生成javaBean如下: public class CalendarTime { @XmlSchemaType(name = "unsignedInt") protected Long day; @XmlSchemaType(name = "unsignedInt") protected week week; @XmlSchemaType(name = "unsignedInt") protected long seconds; ...... } wsdl中day、week、seconds同样定义为type="xs:unsignedInt",生成的javaBean的类型却不同: day---Long week--Long seconds--long 后来实验发现:<xs:choice>包含的类型都会生成基本类型封装类,而在<xs:choice>之外的则生成基本类型。 不知道这是为什么,有哪位高人指点一下? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-07-19
<xs:choice>
<xs:element name="day" type="xs:unsignedInt"/> <xs:element name="week" type="xs:unsignedInt"/> </xs:choice> 这4行能看懂吗? 这些的意思是说day与week里面只能够存在一个, 那好 既然只能够存在一个, public class CalendarTime { @XmlSchemaType(name = "unsignedInt") protected Long day; @XmlSchemaType(name = "unsignedInt") protected week week; @XmlSchemaType(name = "unsignedInt") protected long seconds; ...... } 这个类中 @XmlSchemaType(name = "unsignedInt") protected Long day; @XmlSchemaType(name = "unsignedInt") protected week week; 这两个变量只能存在一个, 即:day!=null时,week=null; week!=null时,day=null; 如果换成基本类型那么 long day; 这里day的默认值为0, week同理, 怎么 确定 这两个变量里面应该是存在哪个 啊 |
|
返回顶楼 | |
发表时间:2011-07-19
呵呵,一言点醒梦中人诶。。好!
不过有个疑问,怎样才能在</xs:choice> 之外生成Long封装类型呢? |
|
返回顶楼 | |
发表时间:2011-07-20
最后修改:2011-07-20
这个是xsd中jaxb类型映射的问题了,
可以看下: http://maomaode.iteye.com/blog/102018 如果楼主不懂的话,需要看下jaxb了 |
|
返回顶楼 | |
发表时间:2011-07-21
谢了,兄弟
|
|
返回顶楼 | |