AppFuse中日期时间(Date,Timestamp,Time)类型问题
来源:互联网 发布:app蜂窝数据无法关闭 编辑:程序博客网 时间:2024/05/02 06:45
我们在POJO类中用到的时间类型为:
java.sql.Date;
java.sql.Time;
java.sql.Timestamp;
java.util.Date;
其中使用java.sql包中三个类型 的话,在pojo与vo对象转换的时候(通过BeanUtils.copyProperties(target, source);拷贝属性的),source类的日期时间field为null的话就会出错。而使用java.util.Date没有这个问题。
因为BeanUtils.copyProperties(target, source)只提供
java.sql.Date;
java.sql.Time;
java.sql.Timestamp
三个类型的转换。分别在org.apache.commons.beanutis.converters包下
SqlDateConverter;
SqlTimeConverter;
SqlTimestampConverter;
临时解决方法:
1.全部使用java.util.Date类型,
但在页面显示过程中,你本来输入"yyyy-MM-dd"的数据最后显示出来会是"yyyy-MM-dd HH:mm:ss"
其中修改src/service目录com.bright.util.DateUtil.getDateTimePattern()方法下,将返回结果不加时间类型,
既就返回return DateUtil.getDatePattern(); 这样在editForm中显示的日期类型就不加时间了.
其中在DisplayTag显示列中添加一个Decorator能解决display table中日期显示问题.如
*list.jsp文件中:
<display:column property="date1" sortable="true" headerClass="sortable"
titleKey="testtable3Form.date1"
decorator="com.bright.webapp.taglib.ShortDateDecorator" />
decorator类定义:
package com.bright.webapp.taglib;
import java.util.Date;
import org.apache.commons.lang.time.FastDateFormat;
import org.displaytag.decorator.ColumnDecorator;
public class ShortDateDecorator implements ColumnDecorator {
/**
* FastDateFormat used to format the date object.
*/
private FastDateFormat dateFormat = FastDateFormat
.getInstance("yyyy-MM-dd");
public final String decorate(Object columnValue) {
Date date = (Date) columnValue;
return this.dateFormat.format(date);
}
}
可参考:
2. 使用java.sql中的日期时间,通过
继承BeanUtils 写一个自己的对象拷贝field,如
其中SqlDateConverter()等处理类中考虑null拷贝不出错,可参考原来的SqlDateConverter()。
package com.bright.util;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.HashMap;
import java.util.Map;
import java.lang.reflect.*;
public final class BeanUtilEx
extends BeanUtils {
private static Map cache = new HashMap();
private static Log logger = LogFactory.getFactory().getInstance(BeanUtilEx.class);
private BeanUtilEx() {
}
static {
//注册sql.date的转换器,即允许BeanUtils.copyProperties时的源目标的sql类型的值允许为空
//ConvertUtils.register(new SqlDateConverter(), java.util.Date.class);
//ConvertUtils.register(new SqlTimestampConverter(), java.sql.Timestamp.class);
//注册util.date的转换器,即允许BeanUtils.copyProperties时的源目标的util类型的值允许为空
//ConvertUtils.register(new UtilDateConverter(), java.util.Date.class);
}
public static void copyProperties(Object target, Object source) throws
InvocationTargetException, IllegalAccessException {
//update bu zhuzf at 2004-9-29
//支持对日期copy
org.apache.commons.beanutils.BeanUtils.copyProperties(target, source);
}
}
待...
java.sql.Date;
java.sql.Time;
java.sql.Timestamp;
java.util.Date;
其中使用java.sql包中三个类型 的话,在pojo与vo对象转换的时候(通过BeanUtils.copyProperties(target, source);拷贝属性的),source类的日期时间field为null的话就会出错。而使用java.util.Date没有这个问题。
因为BeanUtils.copyProperties(target, source)只提供
java.sql.Date;
java.sql.Time;
java.sql.Timestamp
三个类型的转换。分别在org.apache.commons.beanutis.converters包下
SqlDateConverter;
SqlTimeConverter;
SqlTimestampConverter;
临时解决方法:
1.全部使用java.util.Date类型,
但在页面显示过程中,你本来输入"yyyy-MM-dd"的数据最后显示出来会是"yyyy-MM-dd HH:mm:ss"
其中修改src/service目录com.bright.util.DateUtil.getDateTimePattern()方法下,将返回结果不加时间类型,
既就返回return DateUtil.getDatePattern(); 这样在editForm中显示的日期类型就不加时间了.
其中在DisplayTag显示列中添加一个Decorator能解决display table中日期显示问题.如
*list.jsp文件中:
<display:column property="date1" sortable="true" headerClass="sortable"
titleKey="testtable3Form.date1"
decorator="com.bright.webapp.taglib.ShortDateDecorator" />
decorator类定义:
package com.bright.webapp.taglib;
import java.util.Date;
import org.apache.commons.lang.time.FastDateFormat;
import org.displaytag.decorator.ColumnDecorator;
public class ShortDateDecorator implements ColumnDecorator {
/**
* FastDateFormat used to format the date object.
*/
private FastDateFormat dateFormat = FastDateFormat
.getInstance("yyyy-MM-dd");
public final String decorate(Object columnValue) {
Date date = (Date) columnValue;
return this.dateFormat.format(date);
}
}
可参考:
2. 使用java.sql中的日期时间,通过
继承BeanUtils 写一个自己的对象拷贝field,如
其中SqlDateConverter()等处理类中考虑null拷贝不出错,可参考原来的SqlDateConverter()。
package com.bright.util;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.HashMap;
import java.util.Map;
import java.lang.reflect.*;
public final class BeanUtilEx
extends BeanUtils {
private static Map cache = new HashMap();
private static Log logger = LogFactory.getFactory().getInstance(BeanUtilEx.class);
private BeanUtilEx() {
}
static {
//注册sql.date的转换器,即允许BeanUtils.copyProperties时的源目标的sql类型的值允许为空
//ConvertUtils.register(new SqlDateConverter(), java.util.Date.class);
//ConvertUtils.register(new SqlTimestampConverter(), java.sql.Timestamp.class);
//注册util.date的转换器,即允许BeanUtils.copyProperties时的源目标的util类型的值允许为空
//ConvertUtils.register(new UtilDateConverter(), java.util.Date.class);
}
public static void copyProperties(Object target, Object source) throws
InvocationTargetException, IllegalAccessException {
//update bu zhuzf at 2004-9-29
//支持对日期copy
org.apache.commons.beanutils.BeanUtils.copyProperties(target, source);
}
}
待...
- AppFuse中日期时间(Date,Timestamp,Time)类型问题
- easyUI中日期问题date
- java中date string timestamp中日期的转换
- mysql中日期类型DATETIME和TIMESTAMP的区别
- mysql中日期类型DATETIME和TIMESTAMP的区别
- MySQL中日期与时间类型
- mysql中日期和时间类型总结
- mysql中日期和时间类型
- MySQL中日期与时间类型
- MySQL中日期与时间类型
- java中存储mysql数据库时间类型【date、time、datetime、timestamp】
- mysql所支持的日期时间类型有:DATETIME、 TIMESTAMP、DATE、TIME、YEAR。
- java中存储mysql数据库时间类型【date、time、datetime、timestamp】
- java中日期时间格式与毫秒数的转换如何将指定时间转换为Date类型
- java中日期date
- Oracle时间类型date,timestamp时间差计算
- oracle中日期时间加减问题
- Oracle中日期Date类型格式的转化
- 惠普首超IBM成全球最大IT公司
- OpenGL实用开发库(一)---- glew(OpenGL Extension Wrangler Library )
- C/C++中的日期和时间
- .net的smpt配置
- OpenGL实用扩展库(二)---- glee(OpenGL Extension Library)
- AppFuse中日期时间(Date,Timestamp,Time)类型问题
- Jini与J2ME在RFID中的应用
- 难以忽视的真相/
- JSTL的使用
- 就业话题
- 值得收藏一生的经典电影台词
- Butterfly
- Struts工作流程
- 数据结构(C语言)例子连载(4)====广义表的实现