38.3. 为简单类型生成 Java 类
概述
默认情况下,指定的简单类型不会产生生成的类型,除非有枚举。使用简单类型定义的元素映射到 Java 原语类型的属性。
如果需要将简单类型生成到 Java 类中,比如在使用类型替换时,实例会存在。
要指示代码生成器为所有全局定义的简单类型生成类,请将 全局Binding
自定义元素的 mapSimpleTypeDef
设置为 true
。
添加自定义
要指示代码生成器为简单类型创建 Java 类,请添加 globalBinding
元素的 mapSimpleTypeDef
属性,并将其值设为 true
。
例 38.13 “Check Alignment of PHsandgt;On-line Customization to Force Generation of Java Classes for SimpleTypes” 显示在线自定义,可强制代码生成器为命名简单类型生成 Java 类。
例 38.13. Check Alignment of PHsandgt;On-line Customization to Force Generation of Java Classes for SimpleTypes
<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
的属性。value
属性是 第 34.1 节 “原语类型” 中映射定义的 Java 类型。生成的类具有 getter 和 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; } }