这是JAXB enumeration with numeric values的后续问题。可以在http://blog.bdoughan.com/2011/08/jaxb-and-enums.html找到更详尽的解释,该链接可以链接到该帖子。我将使用Blaise的博客文章作为起点。这非常有用,谢谢。
当我调用博客上显示的xjc并将其传递给XSD文件和绑定文件时,生成的类型与博客上显示的相同,即根据需要。好,好。
但我的Maven构建不直接在我的XSD文件集上调用xjc;它在我的WSDL文件上调用wsdl2java,其中包括我的XSD文件。我可以通过wsdl2java调用(http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html,示例7)将-b参数传递给xjc,当我这样做时,根据绑定文件正确生成枚举类型,但是使用它的字段--- http://blog.bdoughan.com/2011/08/jaxb-and-enums.html示例中的Person.educationLevel类型为String,而不是EducationLevelType。
我也尝试使用内联自定义而不是外部绑定文件,即使用
在XSD文件中修饰教育级别类型的simpleType元素 <annotation>
<appinfo>
<jxb:typesafeEnumClass>
<jxb:typesafeEnumMember value="1-6" name="ONE_TO_SIX"/>
<jxb:typesafeEnumMember value="6-12" name="SIX_TO_TWELVE"/>
...etc...
</jxb:typesafeEnumClass>
</appinfo>
</annotation>
这很好用,即使通过wsdl2java使用:枚举生成正确,字段的类型为EducationLevelType。
但是,我们不拥有XSD文件,因此不能使用内联自定义。
那么,我该如何做到这一点?
非常感谢任何帮助。