比如有一个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>