jaxb util_JAXB自定义绑定– Java.util.Date / Spring 3序列化
jaxb util
我有同样的问题时,我正在同春MVC 3和Jackson JSON处理器 ,最近,我遇到了同样的问题与Spring MVC 3和工作JAXB用于XML序列化 。
让我们来探讨这个问题:
问题:
我有以下Java Bean,要使用Spring MVC 3以XML进行序列化:
package com.loiane.model;import java.util.Date;public class Company {private int id;private String company;private double price;private double change;private double pctChange;private Date lastChange;//getters and setters
我还有另一个对象将上面的POJO包装起来:
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控制器中,我将通过@ResponseBody批注返回一个公司列表-这将使用JaxB自动序列化该对象:
@RequestMapping(value="/company/view.action")
public @ResponseBody Companies view() throws Exception {}
当我调用controller方法时,这就是返回视图的内容:
<companies><list><change>0.02</change><company>3m Co</company><id>1</id><lastChange>2011-09-01T00:00:00-03:00</lastChange><pctChange>0.03</pctChange><price>71.72</price></list><list><change>0.42</change><company>Alcoa Inc</company><id>2</id><lastChange>2011-09-01T00:00:00-03:00</lastChange><pctChange>1.47</pctChange><price>29.01</price></list>
</companies>
注意日期格式。 它不是我希望它返回的格式。 我需要以以下格式序列化日期:“ MM-dd-yyyy ” 解决方案:
我需要创建一个扩展XmlAdapter的类并重写marshal和unmarshal方法,在这些方法中,我将根据需要设置日期格式:
package com.loiane.util;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");@Overridepublic String marshal(Date date) throws Exception {return dateFormat.format(date);}@Overridepublic Date unmarshal(String date) throws Exception {return dateFormat.parse(date);}
}
在我的Java Bean类中,我只需要在date属性的get方法中添加@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;private double price;private double change;private double pctChange;private Date lastChange;@XmlJavaTypeAdapter(JaxbDateSerializer.class)public Date getLastChange() {return lastChange;}//getters and setters
}
如果我们尝试再次调用controller方法,它将返回以下XML:
<companies><list><change>0.02</change><company>3m Co</company><id>1</id><lastChange>09-01-2011</lastChange><pctChange>0.03</pctChange><price>71.72</price></list><list><change>0.42</change><company>Alcoa Inc</company><id>2</id><lastChange>09-01-2011</lastChange><pctChange>1.47</pctChange><price>29.01</price></list>
</companies>
问题解决了!
编码愉快!
参考:来自Loiane Groner博客博客的JCG合作伙伴 Loiane Groner提供的JAXB自定义绑定– Java.util.Date/Spring 3序列化 。
翻译自: https://www.javacodegeeks.com/2012/06/jaxb-custom-binding-javautildate-spring.html
jaxb util
jaxb util_JAXB自定义绑定– Java.util.Date / Spring 3序列化相关推荐
- JAXB自定义绑定– Java.util.Date / Spring 3序列化
JaxB可以处理Java.util.Date序列化,但是需要以下格式: " yyyy-MM-ddTHH:mm:ss ". 如果需要将日期对象格式化为另一种格式怎么办? 我有同样的问 ...
- spring:Failed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date‘
前言 springboot有接口日期转换的经典问题,给Entity加@JsonFormat解决了输出json日期格式的输入输出问题,但是解决不了非@RequestBody/也就是普通表单提交的日期格式 ...
- 将符合ISO 8601的字符串转换为java.util.Date
我正在尝试将ISO 8601格式的String转换为java.util.Date . 如果与区域设置(比较示例)一起使用,我发现模式yyyy-MM-dd'T'HH:mm:ssZ符合ISO8601. 但 ...
- 选择日期保存报错Invalid JSON input: Cannot deserialize value of type `java.util.Date` from String......
(spring boot + vue) 1.新增-选择日期-点击保存-报错:报错信息 "Invalid JSON input: Cannot deserialize value of typ ...
- 在java.time.LocalDateTime和java.util.Date之间进行转换
本文翻译自:Converting between java.time.LocalDateTime and java.util.Date Java 8 has a completely new API ...
- 【Java异常】Cannot deserialize value of type `java.util.Date` from String “2020-04-27T19:43:05.000+0800
本文目录 一.背景描述 二.现象描述 三.错误原因 四.解决方案 一.背景描述 环境:SpringCloud Fegin调用 服务端(被调用者):返回了一个JSON对象,其中有一个createTime ...
- class java.time.LocalDateTime cannot be cast to class java.util.Date
现象: 采样springboot 2.3.11.RELEASE + liqubase 是报错 org.springframework.beans.factory.BeanCreationExcepti ...
- 【踩坑专栏】JSON parse error: Cannot deserialize value of type `java.util.Date` from String
出现这种报错的原因是无法将Date字符串解析为Date类型,之前我的做法是在需要转换的字段上标注注解@DateFormatPatter和@JsonFormat 这一次我懒得一个个的标了,因为是自己做的 ...
- Failed to convert value of type ‘java.lang.String‘ to required type ‘java.util.Date‘;
在Java的controller中添加一个方法即可解决 /*** 解决:Failed to convert value of type 'java.lang.String' to required t ...
最新文章
- 【力扣网练习题】删除排序数组中的重复项
- 最近发现了好多好资源,赶紧收藏一下!【粒子特效】
- android okhttp 多线程,android – Okhttp Authenticator多线程
- ECC-based 算法(ECDSA/ECDH) 新潮算法的原理
- RHEL4-VNC服务配置
- 使用python+ffmpeg批量转换格式
- sql中聚合函数和分组函数_SQL选择计数聚合函数-语法示例解释
- idea中tomcat服务器的配置
- Javascript、Jquery获取浏览器和屏幕各种高度宽度
- android 数据持久化——I/O操作
- nginx服务器能ping通,访问不了的解决办法
- 挑战程序设计竞赛学习笔记2
- 《Unix编程艺术》chm 电子书下载
- 离散傅里叶变换终极推导
- 镜像加速器——使用加速器可以提升获取Docker官方镜像的速度
- 健身房有哪些令人讨厌的行为?
- 【uni-app】uni-app-微信小程序项目笔记
- 菩提本无树,明镜亦非台
- p5.js实现细胞免疫动画
- Python根据Excel名单实现文件夹下文件批量改名
热门文章
- win7禁用其他软件只启用自定义软件的方法
- 三大框架题目整合考试题(含详解)
- 涨知识 | 100个中国最难读的地名,第一个就折了
- JS重写toString(),打印想要的值
- drawroundrect java_Canvas中drawRoundRect()方法介绍
- nginx负载均衡与反向代理
- ibatis(1)ibatis的理念
- idea内置junit5_JUnit 5和Selenium –使用Selenium内置的`PageFactory`实现页面对象模式
- camel apache_Apache Camel 3 –新增功能前10名
- bom .dom_MicroProfile 2.2 BOM导入支持