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;
    }

}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.