【问题标题】:How to Customise a Getter and Setter method for JAXB Bindings如何为 JAXB 绑定自定义 Getter 和 Setter 方法
【发布时间】:2012-06-25 04:24:35
【问题描述】:

我们有 5 个 xsd 文件,first.xsd、second.xsd、third.xsd 等等。

我们希望将日历用于每个 xsd 文件中定义的 dateTime 类型,first.xsd 除外。

<jaxb:globalBindings>
    <jaxb:javaType name="java.util.Calendar" xmlType="xsd:dateTime" parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" printMethod="javax.xml.bind.DatatypeConverter.printDateTime"/>
    <jaxb:serializable/>
</jaxb:globalBindings>

我们使用这个条目的目的是告诉 JAXB 每当我们在 xsd 文件中使用 dateTime 时生成日历。但是,我们希望将 XMLGregorianCalendar 用于我们在 first.xsd 中定义的 java 类型:

 ...
 <xsd:simpleType name="myDateType">
    <xsd:restriction base="xsd:dateTime">
    </xsd:restriction>
 </xsd:simpleType>
 ...

为此,我们在 jaxbBinding 文件中添加以下条目:

<jaxb:bindings schemaLocation="first.xsd">

    <jaxb:bindings node="xsd:simpleType[@name='myDateType']">
        <jaxb:class name="XMLGregorianCalendar" implClass="javax.xml.datatype.XMLGregorianCalendar" />                  
        <jaxb:schemaBindings>
            <jaxb:package name="javax.xml.datatype"/>
        </jaxb:schemaBindings>
    </jaxb:bindings>


  </jaxb:bindings>

我们发现生成的java文件有一个奇特的getter setter方法:

package com.time;

public class MyClass{

   @XmlElement(name = "MyDate", required = true)
   protected XMLGregorianCalendar sentenceDate;


   public com.time.XMLGregorianCalendar getMyDate() {
    return myDateType;
   } 


   public void setMyDate(com.time.XMLGregorianCalendar value) {
    return this.myDateType = (com.time.XMLGregorianCalendar)value;
   }

我们期望 JAXB 将创建一个 getter setter 方法来设置并返回一个 com.time.XMLGregorianCalendar。然而事实并非如此。

有谁知道我应该用什么来告诉 JAXB 在我的类中使用 javax.xml.datatype.XMLGregorianCalendar 作为 getter 和 setter 方法?

谢谢。

【问题讨论】:

    标签: java jaxb


    【解决方案1】:

    删除限制,您的代码将遵循。

     <xsd:simpleType name="myDateType" type="xsd:dateTime">
     </xsd:simpleType>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2017-08-23
      • 2017-10-31
      • 1970-01-01
      • 2014-05-10
      相关资源
      最近更新 更多