我有一个像这样的WSDL定义结构:
<xsd:simpleType name="MyDayType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Sat"/>
<xsd:enumeration value="Wed"/>
</xsd:restriction>
</xsd:simpleType>
然后你有一些其他对象,例如:
<xsd:complexType name="MyEntity">
<xsd:sequence>
<xsd:element name="dayType" type="v:MyDayType" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
现在,如果我使用cxf-codegen-plugin,它将生成一个枚举“MyDayType”并在“MyEntity”类中引用它。通常这正是你想要的。
但是在我的情况下,我不能使用枚举,因为我受限于以后使用生成的Java代码的方式。所以我希望CXF生成字符串而不是枚举。因此,它只是将其他对象中此类型的所有出现映射到字符串。 在我的例子中,而不是:
public class MyEntity {
protected List<MyEntity> dayType;
/** Getters(/Setters) **/
}
我想:
public class MyEntity {
protected List<String> dayType;
/** Getters(/Setters) **/
}
我怎样才能做到这一点? 我不想在不编写自己的自定义jaxb插件的情况下更喜欢这样做。
答案 0 :(得分:0)
我找到了一种欺骗自己的方法。 有一个配置,您可以在其中设置一个值,枚举的最长参数名称是多少。如果枚举包含超过此值的值,则CXF将生成字符串而不是枚举。
我只是将此值设置为1,以便每个枚举都大于限制。
这里有关于如何设置值的说明: https://stackoverflow.com/a/12779608/1448704