`

jaxb中对java.util.Date的处理

阅读更多
  JAXB是个好东西,转换JAVA OBJECT到XML的,最近发现JAXB中对java.util.Date的转换有些要注意的地方,笔记之。


比如有一个POJO如下:
  



import java.util.Date;

public class Company {

 private int id;

 private String company;

 private double price;




  另外一个POJO,其中持有的是list类型的Company,如下:
package com.loiane.model;

import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="companies")
public class Companies {

 @XmlElement(required = true)
 private List<Company> list;

 public void setList(List<Company> list) {
  this.list = list;
 }
}

  
  这样通过spring mvc出来的XML会发现:



@RequestMapping(value="/company/view.action")

public @ResponseBody Companies view() throws Exception {}



 
<companies>
 <list>
  <change>0.02</change>
  <company>3m Co</company>
  <id>1</id>
  <lastChange>2011-09-01T00:00:00-03:00</lastChange>
  。。
 </list>
 。。。。。。。
</companies>


  时间格式不对头,查阅了下,发现要继承XmlAdapter,重写其中的方法去对日期进行格式化,
 


import java.text.SimpleDateFormat;
import java.util.Date;

import javax.xml.bind.annotation.adapters.XmlAdapter;

public class JaxbDateSerializer extends XmlAdapter<String, Date>{

 private SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");

    @Override
    public String marshal(Date date) throws Exception {
        return dateFormat.format(date);
    }

    @Override
    public Date unmarshal(String date) throws Exception {
        return dateFormat.parse(date);
    }
}


然后在需要对日期处理的属性中,加入
  @XmlJavaTypeAdapter ,即:

package com.loiane.model;

import java.util.Date;

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import com.loiane.util.JaxbDateSerializer;

public class Company {

 private int id;

 private String company;

 
 @XmlJavaTypeAdapter(JaxbDateSerializer.class)
 public Date getLastChange() {
  return lastChange;
 }

}


  就可以生成合乎规格的信息咯,如下

<companies>
 <list>
  <change>0.02</change>
  <company>3m Co</company>
  <id>1</id>
  <lastChange>09-01-2011</lastChange>
  
 </list>
。。。。。。。。。
</companies>
1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics