如何为JAXB绑定自定义Getter和Setter方法

时间:2012-06-25 04:24:36

标签: java jaxb

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

我们希望将Calendar用于每个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时生成Calendar。但是,我们希望将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方法?

谢谢。

1 个答案:

答案 0 :(得分:0)

删除限制,您的代码将会跟随。

 <xsd:simpleType name="myDateType" type="xsd:dateTime">
 </xsd:simpleType>
相关问题