gpt4 book ai didi

java - 如何为 JAXB 绑定(bind)自定义 Getter 和 Setter 方法

转载 作者:行者123 更新时间:2023-12-01 05:16:08 29 4
gpt4 key购买 nike

我们有 5 个 xsd 文件,第一个.xsd、第二个.xsd、第三个.xsd 等等。

我们希望将日历用于每个 xsd 文件中定义的日期时间类型(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 方法?

谢谢。

最佳答案

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

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

关于java - 如何为 JAXB 绑定(bind)自定义 Getter 和 Setter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11183505/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com