通过wsdl2java调用时,JAXB生成枚举

时间:2013-07-26 13:29:24

标签: enums jaxb wsdl2java xjc

这是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文件,因此不能使用内联自定义。

那么,我该如何做到这一点?

非常感谢任何帮助。

0 个答案:

没有答案