zoukankan      html  css  js  c++  java
  • 使用Jaxb2进行xml与bean的转义时Date的format设置

    参考http://jackyrong.iteye.com/blog/1826699

     JAXB转换JAVA OBJECT到XML的时候,对java.util.Date的转换有些要注意的地方

    输出的格式为:2014-05-18T12:00:09+08:00

    希望能够自定义date的format,具体解决方法如下:

    要继承XmlAdapter,重写其中的方法去对日期进行格式化

    编写一个class如下:

     1 public class JaxbDateSerializer extends XmlAdapter<String, Date>{
     2     @Override
     3     public Date unmarshal(String v) throws UFEException, ParseException {
     4         SimpleDateFormat  dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     5 // 避免线程不安全,这里使用局部变量,而非全局变量
     6         return dateformat.parse(v);
     7     }
     8 
     9     @Override
    10     public String marshal(Date v) throws UFEException {
    11         SimpleDateFormat  dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    12         return dateformat.format(v);
    13     } 
    14 }

    而后在配置文件中,对jaxbMarshaller进行如下配置:(注意adapters的list里,有上述写的类)

    <bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
            <property name="ClassesToBeBound">
                <list>
                    <value>cn.ac.iscas.pebble.ufe.bean.SearchRecord</value>
                    <value>cn.ac.iscas.pebble.ufe.bean.Result</value>
                </list>
            </property>
            <property name="adapters">
                <list>
                    <bean class="cn.ac.iscas.pebble.ufe.ds.JaxbDateSerializer" />
                </list>
            </property>
        </bean>

    而后对于要转换成xml的bean里的date属性添加@XmlJavaTypeAdapter(JaxbDateSerializer.class)属性

    比如上述的classestobebound里有两个bean,一个searchRecord,如下:

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name="parameters")
    public class SearchRecord {
        @XmlElement
        private Integer rid;
        @XmlElement
        private Integer fid;
        @XmlJavaTypeAdapter(JaxbDateSerializer.class)
        @XmlElement
        private Date time;
        @XmlElement
        private Integer sid;
        @XmlElement
        private Integer calculatestate;
        @XmlJavaTypeAdapter(JaxbDateSerializer.class)
        @XmlElement
        private Date lasttime;
        @XmlElement
        private Integer session;
        @XmlElement
    ……………
  • 相关阅读:
    IntelliJ IDEA 常用设置讲解
    Maven
    FileStram文件正由另一进程使用,该进程无法访问该文件,解决方法
    IIS 调用Microsoft.Office.Interop.Word.Documents.Open 返回为null
    .NET 中的 async/await 异步编程
    PHP表单验证内容是否为空
    PHP中的魔术变量
    PHP中的function函数详解
    PHP中的循环while、do...while、for、foreach四种循环。
    利用switch语句进行多选一判断。
  • 原文地址:https://www.cnblogs.com/dorothychai/p/3760060.html
Copyright © 2011-2022 走看看