38.3. 为简单类型生成 Java 类
概述
默认情况下,命名的简单类型不会生成类型,除非它们被枚举。使用简单类型定义的元素映射到 Java 原语类型的属性。
当您需要生成简单类型到 Java 类中时,例如,您需要使用类型替换时。
要指示代码生成器为所有全局定义的简单类型生成类,请将 globalBindings Custom 元素的 mapSimpleTypeDef 设置为 true。
添加自定义
要指示代码生成器为简单类型创建 Java 类,请添加 globalBinding 元素的 mapSimpleTypeDef 属性,并将其值设为 true。
例 38.13 “用于为 SimpleTypes 强制生成 Java 类的 in-Line 自定义” 显示一行自定义,用于强制代码生成器为命名简单类型生成 Java 类。
例 38.13. 用于为 SimpleTypes 强制生成 Java 类的 in-Line 自定义
<schema targetNamespace="http://widget.com/types/widgetTypes"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.0">
<annotation>
<appinfo>
<jaxb:globalBindings mapSimpleTypeDef="true" />
</appinfo>
</annotation>
...
</schema>例 38.14 “绑定文件以强制生成 Constants” 显示自定义简单类型的外部绑定文件。
例 38.14. 绑定文件以强制生成 Constants
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
jaxb:version="2.0">
<jaxb:bindings schemaLocation="types.xsd">
<jaxb:globalBindings mapSimpleTypeDef="true" />
<jaxb:bindings>
<jaxb:bindings>此自定义仅影响 全局范围 内定义 的命名 简单类型。
生成的类
为简单类型生成的类具有一个名为 值 的属性。value 属性是 第 34.1 节 “原语类型” 中映射定义的 Java 类型。生成的类具有 getter 和 value 属性的 setter。
例 38.16 “简单类型的自定义映射” 显示为 例 38.15 “自定义映射的简单类型” 中定义的简单类型生成的 Java 类。
例 38.15. 自定义映射的简单类型
<simpleType name="simpleton">
<restriction base="xsd:string">
<maxLength value="10"/>
</restriction>
</simpleType>例 38.16. 简单类型的自定义映射
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "simpleton", propOrder = {"value"})
public class Simpleton {
@XmlValue
protected String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}