`

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
分享到:
评论

相关推荐

    java.lang.ClassNotFoundException异常的解决1

    3. **使用模块系统(Java 9+)**:如果你的项目已经迁移到了Java 9的模块系统,你可以通过`requires`语句在模块定义中明确声明对JAXB的依赖。例如,在`module-info.java`文件中添加: ```java module ...

    Java常用工具类集合

    `java.util.Calendar`和`java.util.Date`是早期的日期时间API,虽然现在推荐使用新的`java.time` API,但在许多遗留系统中仍然广泛使用。 3. **图像处理**:Java的`javax.imageio`包提供了图像输入/输出功能。`...

    java工具类

    开发者经常会使用`java.util.StringUtils`(如Apache Commons Lang库中的)或`org.apache.commons.lang3.StringUtils`来扩展字符串操作,如空格处理、格式化、比较、替换等。 2. **日期时间**:`java.util.Date`和`...

    java利用JAXB实现对象和xml互相转换方法与实例详解

    import java.util.Date;import javax.xml.bind.annotation.adapters.XmlAdapter;public class DateAdapter extends XmlAdapter, Date&gt; { private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");...

    javaAPI文档

    此外,还有`java.util`包,提供了集合框架(如ArrayList、LinkedList、HashMap等)、日期时间处理(Date、Calendar)、线程管理(Thread)等功能。 2. **输入/输出流**:在`java.io`包中,Java提供了一套强大的I/O...

    java_6_API_中文

    7. **XML处理**:Java 6增强了对XML的支持,包括SAX、DOM和StAX解析器,以及JAXB(Java Architecture for XML Binding),用于对象到XML的自动转换。 8. **安全管理**:Java 6的安全模型进行了强化,提供了更细粒度...

    jdk1.6 API

    `java.util`包则包含了集合框架,如`ArrayList`、`HashMap`和`LinkedList`,以及日期时间类`Date`和`Calendar`。`java.io`包提供了输入输出流处理,如`FileInputStream`和`PrintWriter`。 2. **集合框架** 集合...

    Java JDK_API1.6、1.8、1.9中文文档下载.7z

    - **日期和时间API**:用`java.time`包替换了旧的`java.util.Date`和`java.util.Calendar`,提供了更直观的日期和时间操作。 - **方法引用和构造器引用**:简化了函数式接口实例的创建。 - **默认方法**:允许在...

    JDK6API中文参考

    - **java.util** 包:提供各种实用工具类,如集合框架(ArrayList、LinkedList、HashMap等)、日期/时间处理(Date、Calendar)以及枚举等。 - **java.io** 包:包含了输入/输出流相关的类,用于文件读写、网络...

    JAVASE6.0_Api_en\docs\api

    5. 日期时间:java.util.Calendar和java.util.Date被增强,提供了新的java.time包,包含LocalDate、LocalTime、LocalDateTime等类,提供了更直观、易用的日期时间处理。 二、Swing和AWT Java SE 6.0对图形用户界面...

    jdk6、jdk7、jdk8 API中文版合集

    4. **日期与时间API**:`java.time`包替代了`java.util.Date`和`java.util.Calendar`,提供了更直观和易于使用的日期和时间API。 5. **默认方法**:允许在接口中定义带有实现的方法,增强了接口的功能性。 6. **...

    java API 1.6及1.8 中文版

    日期和时间API的重大改革也是1.8的一个亮点,新引入的`java.time`包取代了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观、更易用的日期和时间处理功能。另外,1.8还引入了默认方法,允许在接口中定义...

    jdk1.8source源码

    - Date/Time API的改进:用`java.time`包取代了过时的`java.util.Date`和`java.util.Calendar`,提供了更强大且易用的时间日期处理功能。 - Nashorn JavaScript引擎:允许Java程序直接执行JavaScript代码,促进了...

    jdk1.6API帮助文档

    2. **java.util**:提供各种通用的数据结构(如List、Set、Map)和实用工具类,如Date、Calendar、Collections框架等。 3. **java.io**:处理输入输出,包括文件I/O、网络流、序列化等。 4. **java.net**:处理...

    jdk1.8,1.6谷歌api

    4. **新的日期/时间API**:`java.time`包取代了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观和易于使用的日期和时间处理功能。 5. **Stream API**:增强了集合操作,提供了并行流和串行流,支持函数...

    JAVA_API jdk1.6中文版和jdk1.8中英文版

    4. **日期和时间API**:新的java.time包替换了旧的java.util.Date和Calendar,提供了更强大且易用的时间日期处理能力。 5. **默认方法**:在接口中可以定义默认方法,允许不破坏向后兼容性的情况下增加接口的功能。...

    java 常用类

    本篇文章将详细讲解在Java中处理CSV、XML、JXL(JExcelApi)数据,以及DateUtil和DBUtil类的常见应用场景。 1. CSV(Comma Separated Values)处理: Java中的CSV处理通常通过第三方库,如OpenCSV或Apache Commons...

    Date相互转换

    首先,`java.util.Date`是Java标准库中最基础的日期时间类。它代表了一个时间点,通常用来记录自1970年1月1日00:00:00 GMT以来的毫秒数。尽管`Date`类在Java 8之后已经被`java.time`包中的新API所取代,但在许多老...

    java常用工具类

    以上工具类的使用都需要遵循一定的编程规范和最佳实践,例如,对于日期时间类,应避免使用已废弃的`java.util.Date`和`SimpleDateFormat`,而采用新API;在使用加密时,要确保安全性和合规性,遵循密码学原则;在...

    华为与IBM等公司JAVA面试题大全.pdf

    - 日期和时间:使用java.util.Date和Calendar类,java.time包提供更现代的API。 2. **数组和集合**: - 数组是一维或多维的数据结构,集合是动态大小的对象集合,如ArrayList、LinkedList、HashSet和HashMap等。 ...

Global site tag (gtag.js) - Google Analytics