ConvertUtils.register注册Date转XMLGregorianCalendar的转换器
2014-02-21 17:57
645 查看
最近遇到BeanUtils.copyProperties(),把Date类型数据copy到XMLGregorianCalendar类型的字段上,以下是我写的转换器,把这个注册到ConvertUtils就可以使用了
import org.apache.commons.beanutils.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Calendar;
import java.util.Date;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
public class XMLGregorianCalendarConverter implements Converter {
private Logger logger = LoggerFactory.getLogger(this.getClass());
public Object convert(Class arg0, Object arg1) {
if(arg1 instanceof XMLGregorianCalendar){
return this.convert(arg0, (XMLGregorianCalendar)arg1);
}else{
return this.convert(arg0, (Date)arg1);
}
}
public Calendar convert(Class calendarType, XMLGregorianCalendar xmlCalendar){
return xmlCalendar.toGregorianCalendar();
}
public XMLGregorianCalendar convert(Class<?> xmlCalendarType, Date date){
if(date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
XMLGregorianCalendar dateType = null;
try {
DatatypeFactory dtf = DatatypeFactory.newInstance();
dateType = dtf.newXMLGregorianCalendar();
dateType.setYear(cal.get(Calendar.YEAR));
dateType.setMonth(cal.get(Calendar.MONTH)+1);
dateType.setDay(cal.get(Calendar.DAY_OF_MONTH));
dateType.setHour(cal.get(Calendar.HOUR_OF_DAY));
dateType.setMinute(cal.get(Calendar.MINUTE));
dateType.setSecond(cal.get(Calendar.SECOND));
} catch (Exception e) {
e.printStackTrace();
}
return dateType;
}
}
只要在BeanUtils.copyProperties(实体, 实体)前
加上ConvertUtils.register(new XMLGregorianCalendarConverter(), XMLGregorianCalendar.class);就可以了。
import org.apache.commons.beanutils.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Calendar;
import java.util.Date;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
public class XMLGregorianCalendarConverter implements Converter {
private Logger logger = LoggerFactory.getLogger(this.getClass());
public Object convert(Class arg0, Object arg1) {
if(arg1 instanceof XMLGregorianCalendar){
return this.convert(arg0, (XMLGregorianCalendar)arg1);
}else{
return this.convert(arg0, (Date)arg1);
}
}
public Calendar convert(Class calendarType, XMLGregorianCalendar xmlCalendar){
return xmlCalendar.toGregorianCalendar();
}
public XMLGregorianCalendar convert(Class<?> xmlCalendarType, Date date){
if(date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
XMLGregorianCalendar dateType = null;
try {
DatatypeFactory dtf = DatatypeFactory.newInstance();
dateType = dtf.newXMLGregorianCalendar();
dateType.setYear(cal.get(Calendar.YEAR));
dateType.setMonth(cal.get(Calendar.MONTH)+1);
dateType.setDay(cal.get(Calendar.DAY_OF_MONTH));
dateType.setHour(cal.get(Calendar.HOUR_OF_DAY));
dateType.setMinute(cal.get(Calendar.MINUTE));
dateType.setSecond(cal.get(Calendar.SECOND));
} catch (Exception e) {
e.printStackTrace();
}
return dateType;
}
}
只要在BeanUtils.copyProperties(实体, 实体)前
加上ConvertUtils.register(new XMLGregorianCalendarConverter(), XMLGregorianCalendar.class);就可以了。
相关文章推荐
- Go Sublime 2 的安装方法
- 使用repo下载google源码,跟编译 ,遇到的错误解决
- Google测试精华文章(1) - 测试行为,而非实现
- 在django中实现QQ登录
- Django学习记录(三)
- USACO 1.5 SuperPrime Rib (sprime)
- USACO 1.5 Prime Palindromes (pprime)
- USACO 1.5 Number Triangles (numtri)
- algorithms learning and what i've read today
- USACO 1.4 Mother's Milk (milk3)
- USACO 1.4 Arithmetic Progressions (ariprog)
- Google Glass真的来了?
- 吼吼吼!一个程序带你看懂API里的基础类Date, SimpleDateFormat,GregorianCalendar的关系!
- 为什么要使用 Go 语言,Go 语言的优势在哪里?
- Godot 相关
- 九度OJ 1162 I Wanna Go Home
- The Most Important Algorithms (in CS and Math)
- wsgi, flup和Django
- GPS获取坐标 显示Google map偏差计算
- 万恶的公司网,google都不让了