Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jaxb 无法从xsd生成java.util.Calendar-正在获取XmlGregorianCalendar_Jaxb_Xsd_Wsdl_Cxf - Fatal编程技术网

Jaxb 无法从xsd生成java.util.Calendar-正在获取XmlGregorianCalendar

Jaxb 无法从xsd生成java.util.Calendar-正在获取XmlGregorianCalendar,jaxb,xsd,wsdl,cxf,Jaxb,Xsd,Wsdl,Cxf,是否可以从xsd文件生成具有Claendar类型字段的实体?我尝试了xs:date和xs:dateTime,但仍然得到了XMLGregarionCalendar。我正在使用cxf codegen插件和jaxb绑定。 谢谢 Paul。生成对象时,可以使用JAXB绑定文件,如的示例7所示。根据要使用的类型(日历、日期等),需要指定适当的适配器。为了使用日历,JAXB提供了适配器javax.xml.bind.DatatypeConverter。要将它与dateTime、date和time一起使用,JA

是否可以从xsd文件生成具有Claendar类型字段的实体?我尝试了xs:date和xs:dateTime,但仍然得到了XMLGregarionCalendar。我正在使用cxf codegen插件和jaxb绑定。 谢谢
Paul。

生成对象时,可以使用JAXB绑定文件,如的示例7所示。根据要使用的类型(日历、日期等),需要指定适当的适配器。为了使用日历,JAXB提供了适配器javax.xml.bind.DatatypeConverter。要将它与dateTime、date和time一起使用,JAXB绑定文件应该是

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings version="2.1"
              xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
              xmlns:xs="http://www.w3.org/2001/XMLSchema"
              xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">

    <jxb:globalBindings>
        <!-- use Calendar instead of XMLGregorianCalendar -->
        <jxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
            parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
            printMethod="javax.xml.bind.DatatypeConverter.printDateTime"/>

        <jxb:javaType name="java.util.Calendar" xmlType="xs:date"
            parseMethod="javax.xml.bind.DatatypeConverter.parseDate"
            printMethod="javax.xml.bind.DatatypeConverter.printDate"/>

        <jxb:javaType name="java.util.Calendar" xmlType="xs:time"
            parseMethod="javax.xml.bind.DatatypeConverter.parseTime"
            printMethod="javax.xml.bind.DatatypeConverter.printTime"/>

    </jxb:globalBindings>        
</jxb:bindings>


如果您想改为使用日期,CXF在CXF xjc运行时中提供org.apache.CXF.xjc.runtime.DataTypeAdapter。

基于Patrick的答案,这里是与xjc等效的:

<jaxb:bindings version="2.1"
              xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
              xmlns:xs="http://www.w3.org/2001/XMLSchema"
              xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">

    <jaxb:globalBindings>
       <!-- use Calendar Date instead of XMLGregorianCalendar -->
       <jaxb:javaType name="java.util.Date" xmlType="xs:dateTime"
                 parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDateTime"
                 printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printDateTime"/>

       <jaxb:javaType name="java.util.Date" xmlType="xs:date"
                 parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDate"
                 printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printDate"/>

       <jaxb:javaType name="java.util.Date" xmlType="xs:time"
                 parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseTime"
                 printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printTime"/>

    </jaxb:globalBindings>         
</jaxb:bindings>