Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Date 通过推土机映射XMLGregorianCalendar_Date_Calendar_Mapping_Dozer - Fatal编程技术网

Date 通过推土机映射XMLGregorianCalendar

Date 通过推土机映射XMLGregorianCalendar,date,calendar,mapping,dozer,Date,Calendar,Mapping,Dozer,我试图映射两个属性,都是XMLGregorianCalendar类型。试图通过推土机实现这一点,值被映射,但我得到的wierd日期时间值如下所示 XML输入 <urn1:ReservationDate>2015-02-11</urn1:ReservationDate> <urn1:ReservationTime>03:28:00</urn1:ReservationTime> 我的推土机映射如下所示 <?xml version="1.0"

我试图映射两个属性,都是XMLGregorianCalendar类型。试图通过推土机实现这一点,值被映射,但我得到的wierd日期时间值如下所示

XML输入

 <urn1:ReservationDate>2015-02-11</urn1:ReservationDate>
 <urn1:ReservationTime>03:28:00</urn1:ReservationTime>
我的推土机映射如下所示

<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://dozer.sourceforge.net
          http://dozer.sourceforge.net/schema/beanmapping.xsd">
    <configuration>
        <stop-on-errors>true</stop-on-errors>
        <date-format>MM/dd/yyyy HH:mm</date-format>
        <!-- <date-format>MM-dd-yyyy</date-format> -->
        <wildcard>true</wildcard>
        <custom-converters>
        <converter type="com.xxx.util.XMLGC2XMLGC">
        <class-a>javax.xml.datatype.XMLGregorianCalendar</class-a>
        <class-b>javax.xml.datatype.XMLGregorianCalendar</class-b>
        </converter>
        </custom-converters>
    </configuration>

    <mapping>
        <class-a>com.xxx..ReservationType
        </class-a>
        <class-b>com.xxx..ReservationDto
        </class-b>
        <field>
            <a>pnrLocator</a>
            <b>pnrLocator</b>
        </field>
        <field>
            <a>reservationDate</a>
            <b>reservationDate</b>
            <a-hint>java.util.GregorianCalendar</a-hint>
        </field>
    </mapping>
</mappings> 

真的
年/月/日HH:MM
真的
javax.xml.datatype.XMLGregorianCalendar
javax.xml.datatype.XMLGregorianCalendar
com.xxx..ReservationType
com.xxx..ReservationDto
PNR定位器
PNR定位器
预订日期
预订日期
java.util.gregorianalendar
XMLGC2XMLGC类代码

public class XMLGC2XMLGC extends
DozerConverter<XMLGregorianCalendar, XMLGregorianCalendar> {
    public XMLGC2XMLGC() {
        super(XMLGregorianCalendar.class, XMLGregorianCalendar.class);
    }
    @Override
    public XMLGregorianCalendar convertFrom(XMLGregorianCalendar src,
            XMLGregorianCalendar dest) {
        return src;
    }
    @Override
    public XMLGregorianCalendar convertTo(XMLGregorianCalendar src,
            XMLGregorianCalendar dest) {
        return dest;
    } 
公共类XMLGC2XMLGC扩展
推土机转换器{
公共XMLGC2XMLGC(){
super(xmlgorionacalendar.class,xmlgorionacalendar.class);
}
@凌驾
公共XMLGregorianCalendar转换源(XMLGregorianCalendar src,
XMLGregorianCalendar dest){
返回src;
}
@凌驾
公共XMLGregorianCalendar转换器(XMLGregorianCalendar src,
XMLGregorianCalendar dest){
返回目的地;
} 
我甚至在阅读一些文档时尝试了Date-to-XMLGregorianCalendar转换,这些文档说转换应该自动进行,但在执行相同操作时,我遇到了类似这样的异常

java.lang.IllegalAccessException:类org.dozer.util.ReflectionUtils无法访问带有修饰符“public”的类org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl的成员


请帮助

这里的问题是JSON序列化。 我必须编写一个自定义序列化程序,以便在JSON中正确显示XMLGregorianCalendar日期

代码如下

public class CustomDateSerializer extends JsonSerializer<XMLGregorianCalendar> {    
    @Override
    public void serialize(XMLGregorianCalendar value, JsonGenerator gen, SerializerProvider arg2) throws 
        IOException, JsonProcessingException {      

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = formatter.format(value.toGregorianCalendar().getTime());
        gen.writeString(formattedDate);

    }
}
这足以在JSON中获得正确的日期格式:)

希望这对别人有帮助

public class CustomDateSerializer extends JsonSerializer<XMLGregorianCalendar> {    
    @Override
    public void serialize(XMLGregorianCalendar value, JsonGenerator gen, SerializerProvider arg2) throws 
        IOException, JsonProcessingException {      

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = formatter.format(value.toGregorianCalendar().getTime());
        gen.writeString(formattedDate);

    }
}
@JsonSerialize(using = CustomDateSerializer.class)
    private XMLGregorianCalendar reservationDate;